在前面的文章中,我们讲述了如何通过缓存的方式优化WodPress的性能,然而除了缓存之外,通过合理配制服务器或WordPress主机,更可以达到事半功倍的效果。
减少HTTP请求
减少HTTP请求可以直接的减小对服务器的压力。主要的方式有以下几种:
合并js或css文件。有些插件和主题,在开发时为了代码的结构性,会将css或js分为多个文件。这导致每次加载页面都会进行多次http请求。把这些js和css合并成一个文件,可以直接减少http请求。这时,可以利用JSMin、Minify CSS等工具对文件进行压缩,同时还可以减少文件的大小。
除了js和css,一些静态的图标类文件(通常写在css中的,作为Logo,Button之类的图片),也可以通过图片处理软件,拼装成一张图片。然后例用css属性设置,让每个小图标能正确的显示出来。这样不仅能减少请求次数,还能加快页面加载的速度。
除了合并,缓存静态网页也是十分必要的。你可以在http头中加入如下代码:
<meta HTTP-EQUIV="expires" CONTENT="date">
//(其中date为网页过期的日期),来指定网页过期的时间。
不过,这个一般不需要用户亲自添加,可以通过相关的Cache插件来实现。参照本系列的另一篇文章:《Wordpress性能优化 - 缓存篇》。
还有一种方式可以减少http请求,就是引用外部的类库。很多插件为了确保其完整性,经常会附带一些常用的类库。在使用这些插件时,这类通用的文件也会同时上传到本地服务器上。如常用的js框架JQuery、YUI,和通用的前端开源包:JQueryUI, Bootstrap等。一般情况下,这是完全没有必要的。例如,你可以直接把网页中的JQuery引用替换成官网引用:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
而且,相比从自己的服务器下载文件,从官方的网站的速度会快很多倍。
启用Apache的gzip压缩
启用gzip后,Apache会对返回的内容进行压缩,加快访问的速度。开启Apache gzip的方法如下:
首先在Apache的配制文件http.conf中添加:
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
mod_deflate是压缩模块(老一点的版本中是mod_gzip),而mod_headers模块的作用是告知浏览器:页面使用了gzip压缩,否则浏览器将不会对网页内容进行解压。
然后在http.conf的最后边加入如下代码:
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
这里跳过一些已经压缩过的文件,避免重复的压缩。比方:png, zip, rar等类型的文件。
需要注意的是,启用gzip加快访问速度是以消耗系统资源为代价的,所以要根据实际情况权衡两者来使用。
robots.txt
通过在网站根目录下添加robots.txt文件,来禁止搜索引擎抓取那些不必要的页面(如后台管理页面,RSS订阅页面,日志文件)。一个常用的robots.txt写发如下:
User-agent: *
Disallow: /cgi-bin
Disallow: /wp-
Disallow: /feed/
Disallow: /comments
Disallow: /comments/feed
Disallow: /trackback
总结
本篇主要介绍了与服务器相关的优化方法,其中不少方法不仅仅适用于Wordpress,也适用于其它的开发平台,同样可以拿本篇文章做为参考。
作者笔拙,文中有不清楚或错误的地方,还望读者见谅并不吝赐教,再次表示感谢。