版权声明: 明月登楼 发表于 2017-08-1919:01:22,共 5155 字。
转载请注明:WP Super Cache 和 W3 Total Cache 缓存插件使用 memcached 提升性能 - 明月登楼的博客
说起 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
插件的具体配置我就不再多说了,因为网上实在是太多类似的文章了(当然大部分都是“千篇一律”的拾人牙慧而已),大家可以随便百度一下了解了,今天主要讲讲 WP Super Cache
和 W3 Total Cache
插件使用服务器端的 memcached
来提升缓存性能。、
关于 memcached
其实说白了,就是 PHP 的一个内存加速器, memcached
会把需要 PHP 运行的代码直接放在服务器内存里来加快运行效率,相应的 WP Super Cache
和 W3 Total Cache
使用 memcached
也就是把一些重要的缓存放到内存里加快了客户端请求的载入时间也就变相的提升了网页的载入速度以及缓存插件的执行效能。
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
的具体信息的,具体放置位置以文件开头为宜,如下:
-
global $memcached_servers; $memcached_servers = array( array( 'IP 地址(默认:127.0.0.1)', // Memcached server IP address 端口号(默认:11211) // Memcached server port ) );
记得核对好代码里的 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
缓存,这时候在 WP Super Cache
的“内容”里就可以看到 memcached
对象缓存已经生效了所以不显示缓存列表了。如下图:
这是细心的站长们应该发现了 WP Super Cache
提示“Mod rewrite
模块可能未安装!”(如下图所示),这个好像是 WP Super Cache
默认仅支持 Apache
造成的,使用 Nginx
的话一定会看到这个提示的,但是经过明月的测试,发现是没有任何的影响的,基本可以暂时无视,当然网上也有很多这个问题的 rewrite
配置大家可以自行百度参考设置,反正我是没有设置的,目前看运行良好。
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 源码里可以看到如下图:
每种缓存模块结尾都注明了“using memcached”即表示已经成功了。
memcached 探针(实时状态监控)的使用
为了更好的获取 memcached
的运行状态,大家还可以使用 http://pecl.php.net/get/memcache-3.0.8.tgz 里提供的 memcache.php
来实现,安装很简单,只需要将这个 PHP 文件放到一个你知道的目录,然后在浏览器里调用即可,并且此文件还支持账号、密码设定只有你自己可以查看的。
解压后,里面有一个 memcache.php
文件,编辑并找到如下代码:
-
define('ADMIN_USERNAME','memcache'); // Admin Username define('ADMIN_PASSWORD','password'); // Admin Password define('DATE_FORMAT','Y/m/d H:i:s'); define('GRAPH_SIZE',200); define('MAX_ITEM_DUMP',50); $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
修改如下:
然后输入指向这个文件的网址链接在浏览器里输入账号和密码后就可以看到如下图所示的 memcached
的运行状态了,话说 Hits 命中率还是很高的嘛!
最后一个小提示, memcached
默认内存使用的是 64MB 的,如果你感觉有点儿不够用,在 LNMP 环境下可以修改 /etc/init.d/memcached
文件里的参数来增加内存量的。修改完成记得要重启一下 memcached
哦!
目前,明月两个站点根据情况分别用着 WP Super Cache
和 W3 Total Cache
,至少目前来看还是很稳定的,载入速度也是很满意的,先测试运行几天看看具体的实测效果,当然在开启了静态化缓存后,必不可少的 CDN 也是要有的,至于为啥还要用 CDN ,老站长们都懂的,谁让我们活在一个“黑暗森林法则”的互联网世界里呢。