WordPress 对象缓存方案概述
WordPress 对象缓存(Object Cache)是一种将数据库查询结果、复杂运算数据等临时存储在内存中的技术,能极大提升网站响应速度。常见的后端方案包括 Memcache、Memcached 以及 Redis。
Memcache 与 Memcached 的区别
这是两个容易混淆但不同的概念:
- Memcache:指 PECL 扩展库
memcache。它是一个较早的 PHP 扩展,提供了基础的 Memcached 协议客户端功能。 - Memcached:指 PECL 扩展库
memcached。它是一个较新的扩展,基于功能更完善的libmemcached客户端库开发,支持更多特性(如二进制协议、更优的序列化方式等)。
结论:对于新部署的环境,推荐使用 memcached 扩展,因为它功能更完善、性能更优且维护更积极。
配套 WordPress 插件选择
选择哪个插件,取决于服务器上安装的 PHP 扩展。
方案一:使用 Memcache 扩展
如果你的服务器安装了 PECL memcache 扩展,应使用官方的 Memcached Object Cache 插件。
- 插件:Memcached Object Cache
- 说明:此插件名称虽为“Memcached”,但其代码库实际兼容
memcache扩展。下载后,需将object-cache.php文件复制到wp-content/目录。
方案二:使用 Memcached 扩展
如果你的服务器安装了 PECL memcached 扩展,应使用专门为其优化的插件。
- 插件:PECL Memcached Object Cache
- 说明:此插件充分利用了
memcached扩展的高级特性。同样需要将object-cache.php文件放置于wp-content/目录。
进阶:全页面缓存与 Batcache
标准的对象缓存插件主要优化数据库查询。若想进一步缓存整个页面输出(HTML),可以使用 Batcache。
- 插件:Batcache
- 原理:Batcache 将完整的页面 HTML 存储在 Memcache(d) 中,对已登录和未登录用户均可生效(可配置),适用于高并发场景。
- 注意:Batcache 需要上述任一对象缓存插件作为基础才能工作。
与其他缓存方案的对比与选择
Memcache(d) vs Nginx FastCGI Cache
- Memcache(d):缓存存储在内存中,速度极快,适合缓存动态对象和全页面(配合 Batcache)。
- Nginx FastCGI Cache:将页面缓存为静态文件存储在硬盘上,速度也非常快,配置在 Web 服务器层,不依赖 PHP。
建议:对于大多数站点,选择其中一种全页面缓存方案即可,无需叠加,以避免缓存规则冲突和管理复杂化。例如,如果已使用 Nginx FastCGI Cache,通常只需搭配对象缓存(Memcache(d))来优化未命中的动态查询,无需再启用 Batcache。
Memcached vs Redis
原文提到了 Redis。作为更新:
- Redis:不仅是缓存,更是支持多种数据结构的内存数据库。它提供持久化、主从复制、事务等功能,在复杂数据操作和可靠性上通常优于 Memcached。
- Memcached:设计简单,专注于多核服务器上的高性能键值缓存,在纯缓存场景下,其多线程模型可能具有优势。
对于 WordPress,使用 Redis Object Cache 插件配合 Redis 服务,是当前非常流行且强大的选择,尤其适合需要持久化或复杂数据操作的站点。
总结与部署建议
- 选择扩展:优先安装并启用 PHP 的
memcached扩展(PECL)。 - 选择对象缓存插件:根据扩展,选择对应的
object-cache.php文件(方案一或方案二)放入wp-content/。 - 评估全页面缓存:如果站点动态性强、并发高,考虑在对象缓存基础上启用 Batcache。如果已使用 Nginx FastCGI Cache 等服务器级缓存,则可跳过 Batcache。
- 考虑 Redis:如果对数据可靠性、数据结构有更高要求,或环境已部署 Redis,可以评估切换到 Redis 方案。
部署后,建议使用 Query Monitor 等插件检查缓存命中率,以验证配置是否生效。