好久没有优化 WordPress 了,手又开始痒痒了,早上一醒来就踏上了我计划一晚上的 WordPress 加速之旅。本次提速的主题是按需合并压缩 JS 文件,本文是建立在合并与压缩 JS 文件的基础之上的,如果有童鞋不明白如何合并与压缩 JS 文件,可以先看看以下两篇文章:《合并JS文件两步走》、《Wordpress之终极Gzip兼容IE6》。解决了合并与压缩 JS 的问题,我们再来看看何为按需?怎么个按需法?
之前,我不分清红皂白地将所有的 JS 文件一股脑地全部压缩在一个 all.js 文件中,再用 gzip 压缩这个文件,这个方法当然没错,但不是最好的,因为每个页面需要调用的 JS 不都一样,如果我们强制一些不需要所有 JS 文件的页面也加载整个 all.js,那岂不是浪费资源拖慢速度?
我解决这个问题的方法是给每个页面定义不同的 JS 文件,然后用 PHP 的判断句来按需调用这些 JS 文件。基本语句格式如下:
<?php if (is_home()) { ?>
<script src="1.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } elseif( is_single() ) { ?>
<script src="2.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } elseif( is_page() or is_category() or is_tag() or is_search() or is_day() or is_month() or is_year()) { ?>
<script src="3.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } ?>
<script src="1.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } elseif( is_single() ) { ?>
<script src="2.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } elseif( is_page() or is_category() or is_tag() or is_search() or is_day() or is_month() or is_year()) { ?>
<script src="3.js文件的地址" type="text/javascript" charset="utf-8"></script>
<?php } ?>
代码仅作参考,具体还要根据每个主题的需要修改。效果可以见我的友情链接页面,现在仅仅加载了0.9K的 JS,如果换作之前,这么一个简单的页面也需要加载20K的 JS,太无辜了。修改后提速的效果还是很明显的。Have a try 吧!
-
合并JS文件两步走2009年06月13日 -
提取并压缩第三方统计JS2009年06月8日 -
完美启用Gzip压缩JS、CSS2009年06月8日 -
WordPress 将选中文字转发到微博2011年10月30日
src=xxx.js?date=xxxx 这样根据修改时间的函数怎么做的呢?
动态调用的?这个还木有怎么研究过耶
我的站点没有外加js,主要是不太懂,怕玩大了
我基本是这样的了
第三篇相关话题日志
收藏此页,有时间再折腾
只是加个判断而已,相信你应该比我更熟悉,你是高手
呵呵不错~! 前几天刚会打开JS~!
博客过渡不错 喜欢~!
呵呵,谢谢,就是加了个滤镜而已,之前写过一篇相关的文章,喜欢的话你也可以试试:http://www.life-studio.cn/page-transitions-in-ie.html
看博主的WP速度还是可以的
看了确实有效啊
呵呵
好久没过来了,总万戈凶更新了好多啊
先留着,反正现在JS少得可怜,话说如果多加载了JS而没有使用浏览器会在状态栏提示有错误的吧-.-
你看,WP功能强大的,老让人喜欢折腾WP了
Pingback: 小站提速手记之 —— 按需加载 CSS | 木木木木木
今天这儿有点点卡 莫非是我的网络问题
痛心疾首啊,居然有人说我的网站慢,白折腾了
----
我说的是卡 不是慢 就是打开之后拖动滚动条时感受到的
首页,首页~~
是今天才有的吗?
我今天确实给所有页面做了些改变,难道有bug!
不用紧张,说不准是我自己的网络问题
看其他人没反应就应该是没问题吧
我对自己的网站有洁癖,半点错误都不容,受不了我自己了
呵呵,试一下~我那个js文件太多啦
评论很中肯,评价很到位
额,我砸没想到这个“按需加载”呢,JS可以这样,对CSS也可以这样~~有拓宽了下思路!
恩,没错,嘿嘿
不过这样就会增加数据库查询次数,毕竟要做判断嘛
我怕适得其反,就没按需加载CSS
而且分离CSS没有分离JS那么简单,CSS会有继承的,这个难题交给你了,呵呵
我已经对CSS按需加载了
不过以我现在的加载速度已经完全看不出按载加载CSS有什么效果了。。。只能在心理上得到一点满足
CSS按需加载就是在特定页面用下,一般一个CSS搞定啦~哦,对了,把在single页才需加装的CSS分出来~~嘻嘻
我疯狂地分出了四个CSS!本来只想分两个的,后来停不住手了。。。
还有,补充一点,我发现按需加载CSS对以后修改CSS很麻烦的说,可能需要同时修改两个、甚至三个、四个CSS文件,累哦~
再次被我捕捉到了。。回复后就出来这个提示:
Warning: Cannot modify header information - headers already sent by (output started at /www/users/life-studio.cn/wp-content/plugins/clean-archives-reloaded/clean-archives-reloaded.php:1) in /www/users/life-studio.cn/wp-comments-post.php on line 82
Warning: Cannot modify header information - headers already sent by (output started at /www/users/life-studio.cn/wp-content/plugins/clean-archives-reloaded/clean-archives-reloaded.php:1) in /www/users/life-studio.cn/wp-comments-post.php on line 83
Warning: Cannot modify header information - headers already sent by (output started at /www/users/life-studio.cn/wp-content/plugins/clean-archives-reloaded/clean-archives-reloaded.php:1) in /www/users/life-studio.cn/wp-comments-post.php on line 84
Warning: Cannot modify header information - headers already sent by (output started at /www/users/life-studio.cn/wp-content/plugins/clean-archives-reloaded/clean-archives-reloaded.php:1) in /www/users/life-studio.cn/wp-includes/pluggable.php on line 865
好像是我的一个插件引起的,原因不明。。。
沙发?