我是怎样为WordPress博客加速的

2012-01-23

摘要:

  • 1. 选择一个合适的运行平台和网络环境;
  • 2. 删除不必要的插件,避免资源重复引入,调整资源引用顺序;
  • 3. 合并JS、CSS等静态文件,减少服务器请求次数;
  • 4. 对WordPress使用缓存机制,减少数据库查询次数;
  • 5. 动静内容分离,将动态内容(比如文章评论)进行托管;
  • 6. 定期优化MySQL数据库;
  • 7. 对请求文件进行压缩(比如GZIP压缩),降低网络流量;
  • 8. 设置文件过期时间,降低浏览器向服务器发起请求次数;
  • 9. 对静态文件启用独立二级域名,减小请求包大小;
  • 10.对静态文件启用CDN(Content Delivery Network)加速服务,将静态内容分发到网络边缘;
  • 11. 减少DNS请求次数;(废话,减少DNS哪儿那么容易啊)

1.选择一个合适的运行平台和网络环境:

无论你是选择虚拟主机、VPS,还是独立服务器,都一定要选择一个稳定快速高效的运行平台,只有这个平台稳定了,谈论后面的内容才有意义。

网络环境:你网站使用的线路,是电信、联通、教育网,还是多线线路?如果是单线环境的话,其他运营商的访客的速度如何?网络延时多少?选择一条合适的线路很重要。比如马文建的博客,使用的是北京神州通信的6线BGP线路,对电信、联通、移动、铁通、长宽等ISP支持良好,网络延时极低,绝对是小流量网站的首选。

2.删除不必要的插件,避免资源重复引入,调整资源引用顺序:
丰富的插件是WordPress的一大特色,但是过多的插件往往会增加服务器的负担,造成服务器响应时间过长,甚至会因此被服务商切断网络访问。所以,选择适量、功能足够强大的插件、及时删除不必要的插件是很重要的。这篇文章介绍的是马文建的博客目前使用的插件。

避免资源的重复引用。在马文建的博客投入使用初期,曾经出现过这样的情况:博客主题和某个插件需要同时引用jQuery文件,但是二者引用的路径不同。这样一来,不仅白白浪费了数百KB的流量,而且可能会导致javascript执行出现错误。更要命的是,重复的资源引用大大增加了网页的加载时间,导致一部分游客因失去耐心而选择离开。所以,检查代码中是否含有重复的代码饮用很重要,而且这项工作需要我们手工去做。

调整资源引用顺序。建议将CSS的引用文件放于head标签内,而将JS文件的引入放于body标签尾部。

3.合并JS、CSS等静态文件,减少服务器请求次数

为减少客户端向服务器端的请求次数,对CSS、JS文件进行合并是一个不错的选择。在这方面,Autoptimize是一个相当出色的WordPress插件。Autoptimize插件可以将页面中的js/css文件进行合并,并将CSS置于文件首部、JS文件置于文章尾部。我建议大家尝试使用下,效果很不错的。

4.对WordPress使用缓存机制

恰当地使用缓存机制,可以有效减少数据库查询次数,使wordpress的运行更快速、更高效。马文建的博客使用的缓存插件是WP Super Cache。该插件可以将内容缓存到服务器硬盘上,并且支持预载入方式,使用的效果很明显。

5.动静内容分离,将动态内容(比如文章评论)进行托管

将经常变化的内容(比如文章评论)从页面中分离出去,进行托管。评论啦社会化评论系统是一个很好的选择,可以将评论从文章分离,并托管在评论啦,采用js方式加载,从而使得缓存不必因为评论的更新而改变。

6.定期优化MySQL数据库

定期优化数据库可以提高数据库的查询效率。Optimize DB是一个数据库优化的插件,只需鼠标轻轻一点,数据库优化瞬间完成。

7.对传输文件进行压缩(比如常用的GZIP压缩)

对传输文件进行压缩(比如GZIP压缩),可以减小文件传输时间,提高网络传输效率。比如Gzip压缩,最大可以将文件压缩至原体积的10%。上面介绍的WP Super Cache插件就可以对文件进行Gzip压缩。

8.设置文件过期时间

对文件设置过期时间后,可以在浏览器缓存时间尚未到期前,只要不是要求强制刷新,浏览器就不会向服务器端再请求该文件。所以,设置合适的文件过期时间,可以降低浏览器发起请求次数,从而间接达到提速的目的。

比如我使用的服务器软件是Apache,我可以在.htaccess文件中对静态文件设置过期时间。下面是对gif/jpg/png/css/js/flash等设置过期时间的示例:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 months"
ExpiresByType image/jpeg "access plus 1 months"
ExpiresByType image/jpg "access plus 1 months"
ExpiresByType image/png "access plus 1 months"
ExpiresByType text/css "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType application/x-javascript "access plus 7 days"
ExpiresByType application/x-shockwave-flash "access plus 7 days"
ExpiresDefault "access plus 60 minutes"
</IfModule>

9.对静态文件启用独立二级域名

不知大家是否注意到,当我们访问www.taobao.com时,淘宝加载图片的域名是tbcdn.cn,而不是www.taobao.com。这是为什么呢?其中一个很重要的原因就是减小请求数据包的大小。

大家都知道,在用户已经登录的情况下,浏览器发出的请求会附加一些额外的cookies信息。如果使用同一个域名,即使是请求一个无需cookies验证的文件,也必须附加额外的cookies信息。这样一来,既增加了请求数据包大小,也增加了服务器负载。比如我在使用SAE托管博客的时候,附加的cookies信息居然达到了2kb之巨!而启用独立域名或二级域名,则可以避免此类情况的发生。所以说,我们应当为静态文件启用新的域名。比如马文建的博客,主站使用mawenjian.net作为域名,而静态文件则使用img.mawenjian.net作为专用域名。

10.对静态文件启用CDN(Content Delivery Network)加速服务

CDN的作用是将内容缓存到网络边缘,当用户需要数据时只需到距离最近的节点取数据即可。CDN的特性决定了CDN服务最适合于静态文件。虽然据说CDN对动态文件也能起到加速作用,但根据CDN原理不难发现,此时CDN节点只是充当了一个透明代理的角色。而像我使用的6线BGP空间,对动态文件采用CDN加速绝对不是一个明智的决定。

比如马文建的博客,就对专用于静态文件的img.mawenjian.net域名采用了CDN加速技术,将图片、CSS样式表等缓存到网络边缘;而对于动态内容,则直接访问源站点。

 

废话了这么多,希望可以对你有所帮助。如果您有不同的见解或者有所补充,欢迎在下方留言,我会逐一回复的。最后感谢你的阅读!


除非特殊说明,本博客文章均为原创,转载请以链接形式标明博文地址。

本文链接地址: 我是怎样为WordPress博客加速的

分类:WordPress | 标签: |

5条评论

  1. 轻微生活说道:

    感谢博主分享,非常受益!

  2. 白小黑说道:

    ping 了下看用的不是sae吧。用的什么空间,这么速度

    • 马文建说道:

      主站用的是万网杭州机房的虚拟主机,BGP线路;图片的话,电信用户访问的是杭州机房,联通、教育网用户访问的是盛大云北京机房,所以速度还说得过去。

  3. 小刀说道:

    Autoptimize跟WP Minify这两个插件哪个好用点

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注