WP Super Cache和W3 Total Cache插件使用memcached提升性能

投稿   明月登楼  2017-08-22 07:25:54  164 人阅读  26 条评论

投放广告联系   诚邀合作伙伴   赞助我们   本站公告   轻松一刻

说起 WP Super Cache W3 Total Cache 这两个大名鼎鼎的 WordPress 缓存插件,很多博客站长们应该是都很熟悉的吧!明月也是 WP Super Cache 和 W3 Total Cache 插件的老用户了,可以说N年前就使用过的,但因为各种因素最后都放弃了,甚至去年都是使用 WP-Rocket 插件来替代的。至于说 WP Super Cache 和 W3 Total Cache 插件当时放弃的原因主要还是“稳定性”太差这个原因的,但是现在回忆细想一下这个“稳定性”其实跟服务器权限是有很大的关系的。

因为 WP Super Cache 和 W3 Total Cache 实在是太强大了,强大到需要服务器的一些具体配置。而以前因为使用的是“虚拟主机”,在一些“权限”上还是有很多限制的,所以就造成运行时间久了以后就会出现各种“不稳定”问题了,记得当时最受不了的就是百度蜘蛛抓取一直返回503错误的问题很让我“抓狂”呀。最近正好在VPS上针对 WP Super Cache 和 W3 Total Cache 进行了分别的安装和调试,两个插件根据站点流量需求分别用在不同的站点上。

从 WP Super Cache 和 W3 Total Cache 两个插件的原理和性能上来说,WP Super Cache 比较适合日IP在1000以内的站点使用,因为并发流量过高的情况下使用 WP Super Cache 会造成主机负载压力,并且有时候这个负载压力还是蛮大的,当然如果服务器主机硬件配置高大上,这个负载压力是可以忽略不计的。

而 W3 Total Cache 的缓存性能相对于 WP Super Cache 来说提升很明显,同时对并发流量过高的承受度还是可以接受的,所以配合适合的服务器硬件配置主机还是个很不错的“高性价比” WordPress 缓存方案的,这里所说的服务器硬件配置主要是指CPU、内存这两个指标的哦。

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第1张

关于 WP Super Cache 和 W3 Total Cache 插件的具体配置我就不再多说了,因为网上实在是太多类似的文章了(当然大部分都是“千篇一律”的拾人牙慧而已),大家可以随便百度一下了解了,今天主要讲讲 WP Super Cache 和 W3 Total Cache 插件使用服务器端的 memcached 来提升缓存性能。

memcached 是什么?

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。主要特征

  • 协议简单;
  • 基于libevent的事件处理;
  • 内置内存存储方式;
  • memcached不互相通信的分布式。

关于 memcached 其实说白了,就是 PHP 的一个内存加速器, memcached 会把需要 PHP 运行的代码直接放在服务器内存里来加快运行效率,相应的 WP Super Cache 和 W3 Total Cache 使用 memcached 也就是把一些重要的缓存放到内存里加快了客户端请求的载入时间也就变相的提升了网页的载入速度以及缓存插件的执行效能。

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第2张

PHP 有 memcached 和 memcache 两个类似组件,百度搜出来的文章,大部分是教你如何安装memcache(d),却不解释二者的区别。如上图所示在LNMP里添加 memcached 模块的时候会提示选择 memcache 还是 memcahed 的。

简单来说:

  • memcache 是 pecl 扩展库版本,原生支持php,出现更早,是老前辈;
  • memcached 是 libmemcached 版本,出现较后,是新一代,因此也更加完善,推荐使用。
  • Ps:如果想更深入了解,可以搜索下 memcache vs memcached

关于服务器端具体的部署 memcached 我就不多赘述了,在军哥 LNMP 环境下只需要运行 ./addons.sh install memcached 来自动编译安装即可了,很方便的,其他生产环境自行百度吧。

在WordPress 里要启用memcached 的支持需要一个 object-cache.php ,上传到 wp-content 目录,这里百度上很多的教程上提供的 object-cache.php 下载链接都是 memcache 的,在 memcached 下使用会出现访问“500错误”的,所以一定要确认自己是 memcached 还是 memcache , memcached 的 object-cache.php 可以在 GitHub 获取到如:https://github.com/tollmanz/wordpress-pecl-memcached-object-cache 这里下载上传即可。(这里要感谢【张戈博客】的文章【WordPress启用memcached动态缓存以及报错解决】一文里的分享,让我走了很少的弯路。)

完成上述的服务器端的配置后,就可以在 WP Super Cache 和 W3 Total Cache 插件配置里启用 memcached 的支持了,不过为了让 WordPress 准确的找到 memcached 的 IP 和端口最好还是要在 wp-config.php 里添加上 memcached 的具体信息的,具体放置位置以文件开头为宜,如下:

  1. global $memcached_servers;
  2. $memcached_servers = array(
  3.     array(
  4.         'IP地址(默认:127.0.0.1)', // Memcached server IP address
  5.          端口号(默认:11211)        // Memcached server port
  6.     )
  7. );

记得核对好代码里的IP地址和端口号与服务器端 memcached 的一定要一直哦。

WP Super Cache 中开启对 memcached 的支持

这里以 WP Super Cache 目前最新版1.5.3版本为例(百度里的很多类似教程都无视了版本号差异,真的有很大的差异的), WP Super Cache 的 memcached 支持目前还在“内测”阶段的,所以用“Simple”方式缓存的是无法使用 memcached 的,所以需要切换 WP Super Cache 缓存模式为“Expert”,这样才可以在下面的“高级”里面看到“使用对象缓存系统来存储缓存文件。 (实验室功能)”这个选择项目开关。如下图:

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第3张

选择这个开关为开启后,点击下面的“更新”,然后清除 WP Super Cache 缓存,这时候在 WP Super Cache 的“内容”里就可以看到 memcached 对象缓存已经生效了所以不显示缓存列表了。如下图:

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第4张

这是细心的站长们应该发现了 WP Super Cache 提示“Mod rewrite 模块可能未安装!”(如下图所示),这个好像是 WP Super Cache 默认仅支持 Apache 造成的,使用 Nginx 的话一定会看到这个提示的,但是经过明月的测试,发现是没有任何的影响的,基本可以暂时无视,当然网上也有很多这个问题的 rewrite 配置大家可以自行百度参考设置,反正我是没有设置的,目前看运行良好。

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第5张

W3 Total Cache 中开启对 memcached 的支持

相对于 WP Super Cache 来看 W3 Total Cache 对 memcached 的支持可以说是大幅的提升了,因为在 W3 Total Cache 里 Page cache 、 Minify 、 Database Cache 、 Object Cache 、 Fragment Cache 都可以支持 memcached 。从这点上来说 W3 Total Cache 相对于 WP Super Cache 来说档次提升了不少,我是蛮喜欢的。 W3 Total Cache 里开启 memcached 的支持可以说是很简单了,只要在 General Setings 里上述的模块了选择 memcached 并保存就可以了,在前端输出的 HTML 源码里可以看到如下图:

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第6张

每种缓存模块结尾都注明了“using memcached”即表示已经成功了。

memcached 探针(实时状态监控)的使用

为了更好的获取 memcached 的运行状态,大家还可以使用 http://pecl.php.net/get/memcache-3.0.8.tgz 里提供的 memcache.php 来实现,安装很简单,只需要将这个 PHP 文件放到一个你知道的目录,然后在浏览器里调用即可,并且此文件还支持账号、密码设定只有你自己可以查看的。

解压后,里面有一个 memcache.php 文件,编辑并找到如下代码:

  1. define('ADMIN_USERNAME','memcache');    // Admin Username
  2. define('ADMIN_PASSWORD','password');    // Admin Password
  3. define('DATE_FORMAT','Y/m/d H:i:s');
  4. define('GRAPH_SIZE',200);
  5. define('MAX_ITEM_DUMP',50);
  6. $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
  7. $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
  8. 修改如下:

修改如下:

  1. define('ADMIN_USERNAME','memcache');    // Admin Username 登录名称,自行修改
  2. define('ADMIN_PASSWORD','password');    // Admin Password 登录密码,自行修改
  3. define('DATE_FORMAT','Y/m/d H:i:s');
  4. define('GRAPH_SIZE',200);
  5. define('MAX_ITEM_DUMP',50);
  6. //下面是定义memcached服务器,一般我们是单机部署,所以注释掉一行,并将服务器地址根据实际修改,比如本文是127.0.0.1
  7. $MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array 
  8. //$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

然后输入指向这个文件的网址链接在浏览器里输入账号和密码后就可以看到如下图所示的 memcached 的运行状态了,话说 Hits 命中率还是很高的嘛!

WP Super Cache和W3 Total Cache插件使用memcached提升性能 WordPress 第7张

最后一个小提示, memcached 默认内存使用的是 64MB 的,如果你感觉有点儿不够用,在 LNMP 环境下可以修改 /etc/init.d/memcached 文件里的参数来增加内存量的。修改完成记得要重启一下 memcached 哦!

目前,明月两个站点根据情况分别用着 WP Super Cache 和 W3 Total Cache ,至少目前来看还是很稳定的,载入速度也是很满意的,先测试运行几天看看具体的实测效果,当然在开启了静态化缓存后,必不可少的 CDN 也是要有的,至于为啥还要用 CDN ,老站长们都懂的,谁让我们活在一个“黑暗森林法则”的互联网世界里呢。

站点效果体验

参考文章

如果文章对你有帮助,请赞赏支持作者继续创作!

历史上的今天:

文章标签: ,   ,   ,  
原文地址:http://blog.ymanz.com/wp/5484.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 明月登楼 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress/zblogPHP免费响应式博客主题Blogs

 发表评论


  1. feiyang
    feiyang 【小白】 @回复

    评论的输入好牛啊! [哈哈] 好东西,已经安装,命中率93.4% [挤眼]

  2. 幻想熊猫
    幻想熊猫 【小白】 @回复

    直接用Simple Cache,比wp super cache还简单,也能利用memcache.

  3. 纬八路随笔
    纬八路随笔 【秀才】 @回复

    这又分享了一个好东西了。

  4. 涂红伟
    涂红伟 【小白】 @回复

    以前用wordpess的时候这几个都用过,用得最多的还是wp super cache

    • 明月登楼
      明月登楼 作者回复2017-08-22 21:58  回复

      @涂红伟是的,相对来说 WP Super Cache 配置简单,网上参考的教程也很多!但我这几天的感觉还是 W3 Total Cache 比较给力些,就是设置上稍微复杂些!

  5. 闲鱼
    闲鱼 【状元】 @回复

    很会研究,厉害[赞]

    • 明月登楼
      明月登楼 作者回复2017-08-22 21:58  回复

      @闲鱼呵呵,闲来无事,瞎折腾的!

  6. 里维斯社
    里维斯社 【举人】 @回复

    回头也来试一试

  7. 网赚乎
    网赚乎 【举人】 @回复

    很详细,学习了,感谢分享。

  8. 姜哥说
    姜哥说 【状元】 @回复

    一看就知道是明月的

  9. devoted
    devoted 【举人】 @回复

    体验过,点赞!

  10. 很文博客
    很文博客 【秀才】 @回复

    我觉得删除自动保存草稿才是优化性能的关键,个人觉得自动草稿占用太多服务器资源!

    • 明月学习笔记Blog
      明月学习笔记Blog 【进士】2017-08-22 12:51  回复

      @很文博客这个只能算是 WordPress 的一个优化了!

  11. Koolight
    Koolight 【尚书】 @回复

    缓存后确实提速不少。

    • 明月学习笔记Blog
      明月学习笔记Blog 【进士】2017-08-22 12:15  回复

      @Koolight是呀,缓存带来的是服务器性能的节省,相应的也把服务器的性能更多的预留给了访问流量!

  12. 网赚站长网
    网赚站长网 【书童】 @回复

    很强大啊

  13. 心动
    心动 【举人】 @回复

    一直在用~

  14. 靠谱学生兼职网
    靠谱学生兼职网 【尚书】 @回复

    技术帖,涨知识。。 [嘻嘻]

  15. 阁楼藏
    阁楼藏 【秀才】 @回复

    插件, [泪] 还得用

  16. 橘子书
    橘子书 【丞相】 @回复

    从长期发展,各种缓存是必须的,毕竟独博站长资金有限!

    • 懿古今
      懿古今【村长】2017-08-22 08:47  回复

      @橘子书是的,折腾缓存比投入资金加强服务器感觉给力

    • 明月登楼
      明月登楼 作者回复2017-08-22 12:14  回复

      @橘子书是的,一定要把服务器的性能榨取到极致!这就是技术的魅力所在了!

  17. 老地儿
    老地儿 【秀才】 @回复

    [偷笑] 一大早的,又抢了个板凳,不错,今天运气很好!