文章目录[隐藏]
WordPress 启用 Memcached 这样的内存缓存之后,每次访问 WordPress 页面,都要从内存中获取多个缓存对象。内存缓存 Redis 和 Memcached 最终选择了 Memcached,这是因为 WordPress 优化加速还有款缓存神器插件——Batcache,这个插件也是 WordPress.com 官方使用的加速插件之一。
Batcache 缓存插件介绍
通过 WPEXP 站点启用 Memcached 内存缓存估计速度上至少提升了5-10倍以上,使用 Batcache 整合加速后,更是快了不少。而 Batcache 插件作者 Andy Skelton 更是宣称:

开发测试显示页面生成时间减少了40倍!200ms 内生成的页面在 5ms 内从缓存得到了数据。使用 Siege 进行的流量模拟表明,安装了 Batcache 的 WordPress 站点可以处理多达20倍的流量。
Batcache 旨在防止大量流量破坏你的网站。它是通过向新用户提供旧页面来实现的。这减少了对 Web 服务器 CPU 和数据库的需求。这也意味着有些人可能会看到几分钟前的页面。但是,这仅适用于以前未与您的网站进行交互的人。一旦他们登录或发表评论,他们将始终获得新鲜的页面。
Batcache 安装使用教程
首先得自己确认下已经安装并正确开启了 Memcached 内存缓存。
- WordPress官方下载 https://wordpress.org/plugins/batcache/
- advanced-cache.php单文件: https://zwjdujin.ctfile.com/fs/5210373-371148923
解压得到advanced-cache.php
文件,上传至/wp-content/
目录。
在 wp-config.php
中的/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
上方添加以下代码:
//使用 Batcache 将 Memcached 缓存对象以页为单位整合加速 - https://wpexp.cn/113.html
define('WP_CACHE', true);
进入 WordPress 仪表盘 → 已安装插件 → Drop-in高级插件,查看 advanced-cache.php 右侧图像描述是否为高级缓存插件。如果不是,请根据提示操作。详情请看下图:

成功后可使用无痕窗口(一旦登录或发表评论,将不再对该用户进行缓存)多次刷新某个页面进行测试。查看源代码,应该在/html
之后可以看到一些 Batcache 状态代码,记得退出登陆查看。
Batcache 参数注释
以下翻译由缙哥哥那蹩脚的英语水平注释,错了不负责。小伙伴们可根据自己的需求进行更改,主要是修改前面4行参数。
var $max_age = 86400; // 缓存过期时间(0表示禁用batcache)
var $remote = 0; // 禁止向远程数据中心发送缓冲区(从不发送req/sec)
var $times = 2; // 一个页面被访问了多少次之后进行缓存(两个或两个以上)
var $seconds = 0; // …在这么多秒内(0表示忽略它,立即使用batcache)
var $group = 'batcache'; // memcached组的名称。您可以通过更改此选项来模拟缓存刷新。
var $unique = array(); // 如果您有条件地提供不同的内容,请将变量值放在这里。
var $vary = array(); // 函数数组,用于create_function。返回值被添加到上面的$unique中。
var $headers = array(); // 在这里添加头作为name=>值或name=>数组(值)。这些将与缓存中的每个响应一起发送。
var $cache_redirects = false; // 设置true启用重定向缓存。
var $redirect_status = false; // 这将在重定向期间设置为响应代码。
var $redirect_location = false; // 这被设置为重定向位置。
var $use_stale = true; // 更新缓存时是否可以返回过期的缓存响应?
var $uncached_headers = array('transfer-encoding'); // 这些头将永远不会缓存。应用函数。
var $debug = true; // 设置false以隐藏batcache信息 <!-- comment -->
var $cache_control = true; // 将false设置为禁用Last-Modified和Cache-Control头
var $cancel = false; // 更改此选项以取消输出缓冲区。使用batcache_cancel ();
var $noskip_cookies = array( 'wordpress_test_cookie' ); // cookie的名称——如果它们存在并且缓存通常会被绕过,那么不要绕过它。