高效的 WordPress 本地缓存加速方案:Memcached+Batcache

2021-01-1719:09:22 16 510 2480字阅读8分16秒
摘要

今天给大家推荐的这个缓存加速方案依旧是属于“救急”应对方案,建议在网站流量突增或者服务器负载紧张的时候“救急”一下最好,长期作为加速优化方案需要服务器内存比较富余的情况下可以考虑,相对于那种大型缓存插件来说这种方式比较简单、安全、高效一些,但跟 CDN 服务来说加速效果基本还是微不足道的。

明月很久没有给大家推荐和聊过 WordPress 本地缓存加速优化的话题了,今天给大家推荐一个 WordPress 本地缓存加速方案:Memcached+Batcache,这是一个以 HTML 页面为对象缓存的 WordPress 加速优化方案,简单点儿说就是将 HTML 页面作为一种 Object Cache 放到服务器内存里 Memcached 中以供后来的访问者直接调用来加快访问速度。就明月自己的实际体验测试来看这种缓存式加速算是目前比较问稳定高效的方式了。

首先这种方式的缓存命中率非常的高,几乎可以保持在 90%以上:

高效的 WordPress 本地缓存加速方案:Memcached+Batcache

可以说至少从效率上来说是非常不错的表现了。理论上来说只要你的服务器内存充足或者富裕,这种方式绝对值得一试,对于减少 WordPress 这类动态博客系统的数据库查询次数效果还是很明显的,了解 WordPress 的站长们都清楚,数据库查询永远是 WordPress 最大的性能瓶颈!

其次,就是这种方案的部署搭建很简单,服务器端只需要安装好 Memcached 即可(可参考【WP Super Cache 和 W3 Total Cache 缓存插件使用 memcached 提升性能】一文中的教程安装哦!), WordPress 层面只需要一个Batcache的插件就可以了,在 WordPress 后台只需要启用这个插件即可,连设置界面都不用的哦!

需要强调的是:1、这个加速优化方式需要在 wp-config.php 里添加如下所示代码:
 
  1. define('WP_CACHE', true);//开启 WordPress 缓存支持  
  2. define('ENABLE_CACHE', true); //开启 Object Cache 缓存支持  
保存退出,并重启 php-fpm 使其生效。
2、Batcache 插件需要在 WordPress 的 wp-content 目录下有 advanced-cache.php(高级缓存插件)和 object-cache.php(外部对象缓存)两个文件的支持,其中 advanced-cache.php 在插件 Batcache 目录里就有提供可以直接复制过去,object-cache.php 在【WP Super Cache 和 W3 Total Cache 缓存插件使用 memcached 提升性能】一文里有详细准确的获取地址,只需要下载后上传到 wp-content 目录中即可。
高效的 WordPress 本地缓存加速方案:Memcached+Batcache3、另外 wp-content 目录下的 advanced-cache.php 文件里可以修改一些 Batcache 生成缓存的参数,如:缓存时间、生成缓存规则等等,具体可以根据中文注释参考修改:
 
  1. var $max_age = 300; // 缓存过期时间(0 表示禁用 batcache)  
  2. var $remote = 0; // 禁止向远程数据中心发送缓冲区(从不发送 req/sec)  
  3. var $times = 2; // 一个页面被访问了多少次之后进行缓存(两个或两个以上)  
  4. var $seconds = 0; // …在这么多秒内(0 表示忽略它,立即使用 batcache)  
  5. var $group = 'batcache'; // memcached 组的名称。您可以通过更改此选项来模拟缓存刷新。  
  6. var $unique = array(); // 如果您有条件地提供不同的内容,请将变量值放在这里。  
  7. var $vary = array(); // 函数数组,用于 create_function。返回值被添加到上面的$unique 中。  
  8. var $headers = array(); // 在这里添加头作为 name=>值或 name=>数组(值)。这些将与缓存中的每个响应一起发送。  
  9. var $cache_redirects = false; // 设置 true 启用重定向缓存。  
  10. var $redirect_status = false; // 这将在重定向期间设置为响应代码。  
  11. var $redirect_location = false; // 这被设置为重定向位置。  
  12. var $use_stale = true; // 更新缓存时是否可以返回过期的缓存响应?  
  13. var $uncached_headers = array('transfer-encoding'); // 这些头将永远不会缓存。应用函数。  
  14. var $debug = true; // 设置 false 以隐藏 batcache 信息 <!-- comment -->  
  15. var $cache_control = true; // 将 false 设置为禁用 Last-Modified 和 Cache-Control 头  
  16. var $cancel = false; // 更改此选项以取消输出缓冲区。使用 batcache_cancel ();  
  17. var $noskip_cookies = array( 'wordpress_test_cookie' ); // cookie 的名称——如果它们存在并且缓存通常会被绕过,那么不要绕过它。  
记得修改完此文件后一定要重启一下 php-fpm 进程哦,否则是不会生效的哦!

明月自己已经测试 Memcached+Batcache 这种加速优化方式快一周了,至少到目前为止还是非常稳定和高效的需要注意的是,这种方式只对游客访问有效,登陆用户、已发表评论用户是无效的,这点儿可以通过浏览器中查看页面源代码最后的如下图所示注释文字来判断缓存是否生效:

高效的 WordPress 本地缓存加速方案:Memcached+Batcache

上图可以看到当前 HTML 页面载入时间是 0.409 秒,其中 91640 字节的缓存在 86400 秒(一天)后失效,如果是登陆用户或者已经发表了评论的是无法看到此注释文字的哦,也就标明访问到的不是缓存页面。

综上所述,今天给大家推荐的这个缓存加速方案依旧是属于“救急”应对方案,建议在网站流量突增或者服务器负载紧张的时候“救急”一下最好,长期作为加速优化方案需要服务器内存比较富余的情况下可以考虑,相对于那种大型缓存插件来说这种方式比较简单、安全、高效一些,但跟 CDN 服务来说加速效果基本还是微不足道的。

历史文章推荐:

  • 本博客公众号
  • 扫一扫关注!
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin
明月登楼
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:16   其中:访客  1   博主  0
    • LauMing LauMing 1

      看了那麼多個cache插件,w3、super cache、nginx cache、wp rocket之類,不知道這個有沒有比較有效?還是都大差不差,用起來差不多呢?

      • 杨景文 杨景文 2

        大佬啊,当一个服务器上有多个wordpress站点的时候,object-cache.php 文件里的 define( ‘WP_CACHE_KEY_SALT’, ” ); 这里是不是还需要处理下?我是这样处理的 define( ‘WP_CACHE_KEY_SALT’, ‘www.youngfree.cn’ );

          • 明月登楼 明月登楼

            @ 杨景文 是的,不过我记得是在wp-config.php里添加这个变量定义的呀!难道是我记错了?

              • 杨景文 杨景文 2

                @ 明月登楼 这个变量是 object-cache.php 文件里自带的,一个站点,可以用默认的,多个站点,若不设置,某些情况可能会有问题

                  • 明月登楼 明月登楼

                    @ 杨景文 哦,我知道这个变量,那看来是我记错了!不过,我在wp-config.php里声明这个变量好像也生效了!

              • 〆国际海乘、海员招募 〆国际海乘、海员招募 4

                速度再快有卵用!没有百度权重就没有流量!有百度权重才是王道! :mrgreen:

                • 〆一缕阳光ご 〆一缕阳光ご 4

                  路过,体验感受一下! :idea:

                  • 趴在窗边数星星 趴在窗边数星星 5

                    这个方案好像对评论的支持很不错哦!能够及时的更新缓存,评论实时显示,不错! :wink: :wink: :wink:

                    • 明月云服务 明月云服务 2

                      过来体验一下! :grin: :grin: :grin:

                      • 学习笔记Blog 学习笔记Blog 4

                        不错,载入时间提升还是比较明显的,就是在 CDN 下好像客户端没啥效果!

                          • 明月登楼 明月登楼

                            @ 学习笔记Blog 是的,CDN后这个加速就没啥效果了!不过,倒是可以减小服务器负载需求!算是对提升服务器性能有帮助吧!呵呵!