我爱水煮鱼 » WordPress » WordPress 缓存插件介绍

WordPress 缓存插件介绍

大家可能都有这样的经验,使用 WordPress 一段时间,装了一些的插件之后,博客的速度会变慢,甚至很慢,如果服器不够强劲,比如你使用的是一些 Oversell 的主机,而非 MT 这样的 VPS,并且流量很大,那么你可能会噩梦相随,你会经常因为 CPU 超标,而被停掉服务。如果你的预算不够不能更换服务器,那你应该使用 WordPress 缓存插件来降低 WordPress 对服务器的资源占用。

WordPress 缓存插件有很多种,这里不能一一讲解,只能介绍我熟悉的几种给大家做个简单的介绍,你可以根据自己的服务器的特点给自己的 WordPress 博客选择相应的缓存插件:

WordPress 对象缓存

WordPress Object Cache(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 目录下。

文件缓存其实把 WordPress 默认的对象缓存的对象存储为文件。这样就会有一个问题,就是每次访问页面的时候,要读取多个缓存的文件,如果你服务器的硬盘速度不是很快,这样就会造成你的服务器的 I/O 拥塞问题,所以 WordPress 2.1 默认就没有开启文件缓存,2.5 更是取消了。

内存缓存

从 2.5 版本开始,WordPress 建议使用内存缓存,什么是内存缓存,就是把 WordPress 默认的对象缓存的对象保存到内存中去,下一次访问的时候,直接到内存中获取内容,这样就没有上面所介绍文件缓存的 I/O 操作,并且 SQL 查询也减少了很多,整个系统都变的快很多。

不过内存缓存需要你的服务器支持(一般的虚拟主机都是不支持的),目前支持内存缓存的插件有:

选择什么内存缓存插件,需要你根据你自己的服务器的配置,比如你的服务器配置了 Memcached 的 PHP 扩展,你就可以使用 Memecached 的插件。我曾经使用的服务器含有 Memcached 的 PHP 扩展,所以这里有安装 Memecached 缓存插件的介绍

内存缓存和文件缓存一个相同的地方也是网站的动态内容根据功能分成很多个部分,分别对每个部分缓存,而不是把这个页面当作一个整体缓存了,所以访问一个页面还是需要从内存中读取多个内容,所有就有人开发了 Batcache 插件,Batcache 在内存中缓存整个页面,这样再次访问 WordPress 页面的时候,则直接获从内存中获取这个内存文件即可。这样就减少了程序的运行,再次降低了 CPU 使用率,也进一步加速了速度,特别是对一些流量非常高的日志来说,效果特别好。

HTML 静态缓存

但是绝大部分 blogger 使用的服务器都不支持内存缓存所需的这些 PHP 或者服务器扩展,所以我们需要用到 HTML 静态化缓存插件,这类型的插件可以把 WordPress 页面缓存一个静态的 HTML 页面存到服务器上,下次访问该页面的时候,不需要再次运行 PHP 代码,直接从服务器返回这个 HTML 文件即可,这样就大大降低了 CPU 的占用率,但是使用 HTML 静态化缓存插件,也有一个不好的地方,比如日志流量,最新日志,这些动态的内容不会时时更新,虽然我们可以通过 Javascript 等方法解决这个问题,但是对于普通用户来说还是太麻烦了。这方面插件用的最多的是 WordPress Super Cachecos html cache

其中 WP Super Cache 是目前最好用的全静态缓存插件,设置非常灵活,可以区分普通浏览用户和注册用户,并且还支持手机浏览等。这里是我对 WP Super Cache 插件的详细介绍

最新版本的 WP Super Cache 也支持内存缓存了,这样系统同时安装了 Memcached + WP Super Cache,WordPress 首先把默认对象缓存的对象存储到内存中去,并生成静态 HTML 文件,已登陆的用户从内存中获取各个缓存对象,未登录的用户直接访问静态 HTML,这样效率非常高。

总结

那么你应该如何缓存你的 WordPress,下面是我总结的经验:

  1. 选择性能优秀的 VPS,比如我现在使用的 Media Temple
  2. 只使用必要的插件。
  3. 如果对 WordPress 熟悉,可以对使用插件进行必要的优化
  4. 根据你自己博客的实际静态化你的 WordPress。
  5. 如果服务器支持,尽可能使用内存缓存。

标签:

分享到:

请选择你看完该文章的感受:

不错 超赞 无聊 扯谈 不解 路过
  1. * XCache-Based Caching Extension
    * eAccelerator-Based Caching Extension
    * APC-Based Caching Extension
    请问以上三个插件需要什么服务器的PHP扩展?如何知道安装上的插件起了作用?

  2. 去看了一下cos html cache插件,最后更新日期是在2007.06.24

    不知道对于最新版的wordpress依然支持么?是否会有什么冲突?

    • (我打了这么多字,不是复制的,所以非ad)依然支持新版本,只是用了要注意一些问题。有问题再来这留言,或者去我那留言。还有一个问题,如果你采用的是/%category%/%postname%/这种形式的永久链接作为日志地址的话,那是很麻烦的,生成静态的文件是不可以这种地址的。最好是http://www.yourwebsite.com/2007/09/16/post-name.html这种形式的永久链接
      这样可以不更换永久链接就可以直接全站静态化了。
      如果是/%category%/%postname%/这种,你需要更换永久链接形式。然后更换的话又需要做301定向。做301定向,又很多麻烦,比如你是/%postname%/这种最简单的形式,他要是重定向到/%postname%.html。那么单独的页面比如links页面就被定向到/links.html。所以静态化前还要做好一切准备。还有失效的内建搜索等,如果有麻烦可以找我,或者这留言。去我博客就点我名字吧。

  3. cos-html-cache 将会大大地提高你wordpress的运行效率和载入速度。
    但是使用该插件后会难免出现一系列的问题:
    比如内建的搜索失效等,需要注意的。对一般的博客,选取的服务器可能都不是很强劲那种,所以,如果追求速度,还是静态化吧。

  4. 还有想问下和我爱水煮鱼交换链接需要什么条件?新博,pr3。经常更新可以不?其他交换链接的也可以找我哈。谢谢贵宝地让我发一条非ad的ad。

  5. cos html cache的分页无法静态花,是.html/2的状态,trackback也是.html/trackback,都出现404,不知博主有没有很好的解决的方法?本想用.htaccess转向,奈何技术有限,唉……

  6. 本来在用WP Super Cache的,后来给卸了,因为当时没感觉速度有什么太明显的提高,不过看了丹尼斯的文章就又想试试了 :razz: