大家可能都有这样的经验,使用 WordPress 一段时间,并且安装了一些的插件之后,博客的反应速度会变慢,甚至很慢,如果服器不够强劲,比如你使用的是一些 Oversell 的主机,而非 MT 这样的 VPS,并且流量很大,那么你可能会噩梦相随,你会经常因为 CPU 超标,而被停掉服务。如果你的预算不够不能更换服务器,这个时候我们应该使用 WordPress 缓存插件来降低 WordPress 对服务器的资源占用。
WordPress 缓存插件有很多种,这里不能一一讲解,只能介绍我熟悉的几种给大家做个简单的介绍,你可以根据自己的服务器的特点给自己的 WordPress 博客选择相应的缓存插件:
文件缓存
在 WordPress 2.5 版本之前 WordPress 可以使用文件缓存,需要在 wp-config.php 文件添加 define('ENABLE_CACHE','true'); 即可启用。2.5 版本之后,WordPress 取消了文件缓存和 ENABLE_CACHE 这个全局变量。
但是如果你还想继续使用文件缓存,可以安装这个插件:File-Based Extension to the WordPress Object Cache。把下载下来的文件上传到 wp-content 目录下,注意不是 plugins 目录下。
文件缓存其实把网站的动态内容根据功能分成很多个部分,然后分别存储为文件。这样就会有一个问题,就是每次访问页面的时候,要读取多个缓存的文件,如果你服务器的硬盘速度不是很快,这样就会造成你的服务器的 I/O 拥塞问题,所以 WordPress 2.1 默认就禁止文件缓存,2.5 更是取消了。
内存缓存
从 2.5 版本开始,WordPress 建议使用内存缓存,什么是内存缓存,就是把经常被访问的动态内容保存到内存中去,下一次访问的时候,直接到内存中获取内容,这样就没有上面所介绍文件缓存的 I/O 操作,并且 SQL 查询也减少了。
不过内存缓存需要你的服务器支持(一般的虚拟主机都是不支持的),目前支持内存缓存的插件有:
- XCache-Based Caching Extension
- eAccelerator-Based Caching Extension
- Memcached-Based Caching Extension
- APC-Based Caching Extension
选择什么内存缓存插件,需要你根据你自己的服务器的配置,比如你的服务器配置了 Memcached 的 PHP 扩展,你就可以使用 Memecached 的插件。我曾经使用的服务器含有 Memcached 的 PHP 扩展,所以这里有安装 Memecached 缓存插件的介绍。
内存缓存和文件缓存一个相同的地方也是网站的动态内容根据功能分成很多个部分,分别对每个部分缓存,而不是把这个页面当作一个整体缓存了,所以访问一个页面还是需要从内存中读取多个内容,所有就有人开发了 Batcache 插件,Batcache 在内存中缓存整个页面,这样再次访问 WordPress 页面的时候,则直接获从内存中获取这个内存文件即可。这样就减少了程序的运行,再次降低了 CPU 使用率,也进一步加速了速度,特别是对一些流量非常高的日志来说,效果特别好。
HTML 静态缓存
但是绝大部分 blogger 使用的服务器都不支持内存缓存所需的这些 PHP 或者服务器扩展,所以我们需要用到 HTML 静态化缓存插件,这类型的插件可以把 WordPress 页面缓存一个静态的 HTML 页面存到服务器上,下次访问该页面的时候,不需要再次运行 PHP 代码,直接从服务器返回这个 HTML 文件即可,这样就大大降低了 CPU 的占用率,但是使用 HTML 静态化缓存插件,也有一个不好的地方,比如日志流量,最新日志,这些动态的内容不会时时更新,虽然我们可以通过 Javascript 等方法解决这个问题,但是对于普通用户来说还是太麻烦了。这方面插件用的最多的是 WordPress Super Cache 和 cos html cache。
我目前使用 WP Super Cache 来缓存 WordPress,因为 WP Super Cache 设置更加灵活,可以区分普通浏览用户和注册用户,并且还支持手机浏览等。这里是我对 WP Super Cache 插件的详细介绍。
总结
那么你应该如何缓存你的 WordPress,下面是我的原则:
- 只使用必要的插件。
- 对使用插件进行必要的优化。
- 根据你自己博客的实际静态化你的 WordPress。
- 如果服务器支持,尽可能使用内存缓存。

小王 | 2009-05-10 23:21:45 | #
看样子都挺复杂的,不太好弄啊。
支持 反对
Sam | 2009-08-28 17:39:55 | #
我觉得wp super cache不错
支持 反对
feicun | 2009-09-01 13:39:35 | #
本来在用WP Super Cache的,后来给卸了,因为当时没感觉速度有什么太明显的提高,不过看了丹尼斯的文章就又想试试了
支持 反对
摩凝(M.Chan) | 2009-09-22 09:45:51 | #
我一直以来都有“1 Blog Cacher”,感觉还不错的,启用以后速度有明显的增加,不过有少量插件会失效。
支持 反对
bolo | 2010-03-14 00:06:39 | #
错误,ENABLE_CACHE不是全局变量,而是常量
支持 反对
kevin | 2010-05-11 21:27:06 | #
有些心动了,有时间也试一下。
支持 反对
Denis | 2010-05-11 21:28:44 | #
支持 反对