很多人都会说 wordpress 不够快,这是主要因为没有安装适合的缓存插件,而 wordpress 缓存插件有很多种,很多人有点迷糊,不知道应该安装哪一种。
下面就给大家介绍各种情况下典型缓存插件,然后大家可以根据自己的服务器的特点给自己的 wordpress 选择相应的缓存插件:
对象缓存机制
wordpress 默认的缓存机制叫做 wordpress 对象缓存(wordpress object cache), 它的主要功能是把数据库查询结果或者复杂运算的结果按照 key-value 这样的方式存储到对象里面,然后还支持按照 group 来划分和避免缓存的内容冲突。
下次进行同样操作的时候,可以直接从这个对象中取出数据,不用重复到数据库中或者其他外部网站获取数据。wordpress 不同的缓存的方式就是把缓存对象的对象存储到哪里,或者是否将整个页面缓存。
文件缓存
在 wordpress 2.5 版本之前 wordpress 可以使用文件缓存,在 wp-config.php 文件添加 define('enable_cache','true'); 即可启用,2.5 版本之后,wordpress 取消了文件缓存和 enable_cache 这个全局常量。
文件缓存其实把 wordpress 对象缓存的对象存储到文件里,这样就会有一个问题,就是每次访问页面的时候,要读取很多个缓存的文件,如果你服务器的硬盘速度不是很快,这样就会造成你的服务器的 i/o 拥塞问题,所以 wordpress 2.1 默认没有开启文件缓存,2.5 更是直接取消了。
如果你还想继续使用文件缓存,可以安装这个插件:file-based extension to the wordpress object cache,把下载下来的文件上传到 wp-content 目录下,注意不是 plugins 目录下。
内存缓存
从 2.5 版本开始,wordpress 建议使用内存缓存,什么是内存缓存,就是把 wordpress 对象缓存的对象保存到内存中去,下一次访问的时候,直接到内存中获取内容。
使用内存缓存就没有文件缓存的大量 i/o 操作的问题,并且 sql 查询也减少了很多,整个系统都变的快很多,如果做的好的话,甚至可以做到 0sql,比如 autumn pro 和 sweet 主题。
不过开启内存缓存需要你的服务器支持(一般的虚拟主机都是不支持的),目前内存缓存一般使用 memcached 或者 redis。
wpjam basic 已经集成 memcached,将 wpjam-basic/template/ 目录下的 object-cache.php 文件复制到 wp-content 目录下,注意不是 wp-content/plugins/,这里有安装 memecached 缓存插件的详细介绍。
内存缓存和文件缓存一样,把一个页面动态内容根据功能分成很多个部分进行缓存,而不是把这个页面当作一个整体缓存了,所以访问一个页面还是需要从内存中读取多个内容,所有就有人开发了 batcache 插件。
batcache 在内存中缓存整个页面,这样再次访问 wordpress 页面的时候,则直接从内存中获取这个内存文件即可。这样就减少了程序的运行,再次降低了 cpu 使用率,也进一步加速了速度,但是也可能造成一些功能的问题,因为整个页面缓存了,所以会和下面静态缓存一样的问题。
静态缓存
如果服务器没有 root 权限,就不能安装 memcached 这些服务端服务和 php 扩展,那么可以使用 html 静态化缓存插件。
这类型的插件把 wordpress 整个页面缓存到一个静态的状态 html 页面存到服务器上,下次访问该页面的时候,不需要再次运行 php 代码,直接从服务器返回这个 html 文件即可,这样就大大降低了 cpu 的占用率。
但是使用 html 静态化缓存插件,也有一个不好的地方,比如文章浏览,最新文章,这些动态的内容不会时时更新,虽然我们可以通过 javascript 等方法解决这个问题,但是对于普通用户来说还是太麻烦了。
静态缓存插件用得最多的是 wordpress super cache,它设置非常灵活,可以区分普通浏览用户和注册用户,并且还支持手机浏览等,这里是我对 wp super cache 插件的详细介绍。
最新版本的 wp super cache 也支持内存缓存了,这样系统同时安装了 memcached + wp super cache,wordpress 首先把默认对象缓存的对象存储到内存中去,并生成静态 html 文件,已登陆的用户从内存中获取各个缓存对象,未登录的用户直接访问静态 html,这样效率非常高。
总结
那么你应该如何缓存你的 wordpress,下面是我总结的经验:
- 选择性能优秀的 vps,比如阿里云和腾讯云。
- 只使用必要的插件,wpjam basic 集成了很多功能。
- 安装高效率的 wordpress 主题,比如 autumn pro 或者 sweet。
- 如果服务器支持,尽可能使用内存缓存,wpjam basic 已经集成 memcached。
- 对 wordpress 进行优化。