前期准备
这一部分,主要需要你的服务器或主机安装Memcached这个扩展(请注意是Memcached,而不是Memcache)。如果你有宝塔,可以直接在宝塔页面找到Memcached,直接安装就可以了。
WordPress设置
这里,需要在网站根目录下wp-content文件夹下,上传一个object-cache.php文件(放在文章最后了可以去下载)
修改wp-config.php文件
然后,网站根目录下,找到wp-config.php文件,编辑该文件,找一个位置插入如下代码,如果不知道插入到第几行,可以放在define(‘WP_DEBUG’, false);该代码下
define('WP_CACHE', true);
到此,你的Wordpress就开启了Memcached缓存数据库查询结果的功能。
Memcached缓存功能确认
如果你不放心,或者不确定是否成功开启memcached缓存功能,可以继续往下看,下面来告诉你如何确定网站是否开启了memcached功能。
编辑主题根目录footer.php,在适当位置插入如下代码:
<span class="name"><?php echo get_num_queries(); ?> queries</span>,<span class="link"><?php timer_stop(3); ?> seconds</span>
保存,进去网站前端,网站底部会出现16 queries,0.109 seconds这样的信息,表示该页面查询数据库16次,0.109秒内生成页面。基本上,就可以确认memcached生效了。
如果没有生效,那么大概会是这个样子:168 queries,1.109 seconds。你可以自己通过在wp-config.php中插入的那句代码,true改成false来观察这个变化(当然,最好可以删掉wp-content目录下的object-cache.php再观看区别)。事实上,只要你的数据库查询次数在20左右,就可以确认memcached已经生效了。
同台服务器上多个 WordPress 站点怎么同时使用 Memcached
同台服务器多个网站同时启用Memcached,访问一个网站会跳转到另外一个网站,就是数据互串了。
原因分析
这是因为 object-cache.php 是使用 WordPress 的表前缀($tableprefix)来区分不同站点在内存中的缓存的。如果你在同个服务器多个 WordPress 网站的表前缀都相同,都是默认的 wp,那么 object-cache.php 就无法区分是哪个站点了。那么怎么解决呢?
解决对策
知道了问题,那么就非常好解决,有两个解决方法:
- 修改表前缀,让不同的 WordPress 博客使用不同的表前缀。但是一般修改表前缀都涉及到数据库,很多小白都不会操作,包括老刘也不会,
- 如果修改表前缀不方便,我还提供了 WP_CACHE_KEY_SALT 这个缓存 key 盐值的常量,你只需要在不同站点的 wp-config.php 文件定义不同的 WP_CACHE_KEY_SALT 值即可。
比如两个站点分别定义为:define('WP_CACHE_KEY_SALT', 'site1');
define('WP_CACHE_KEY_SALT', 'site2');
修改完重启Memcached即可。
发表评论