参考了网上的诸多教程后,我才明白这是1Panel面板兼容问题导致的。
先去 1Panel后台 > 数据库 > Redis > 连接信息 获取以下两组数据并记下来备用:
移步去 1Panel后台 > 主机 > 文件 找到你的WordPress网站配置文件wp-config.php。
一般来说这个文件位于类似路径下:/opt/1panel/apps/wordpress/wordpress/data。
直接从1Panel面板在线打开编辑wp-config.php,在此文件内容最底部添加以下代码段:
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_PASSWORD', '此处替换成实际的Redis容器连接密码');
确认保存修改后的wp-config.php文件。
此时去WordPress后台看Redis Object Cache的状态,会发现已经是可访问了。
但,还没完事,我们继续修改其他配置。
移步去 1Panel后台 > 文件 找到你的Redis Object Cache插件配置文件object-cache.php,我手头这台服务器上路径位于 /opt/1panel/apps/wordpress/wordpress/data/wp-content/plugins/redis-cache/includes/object-cache.php,您可以对照找找看。
在线打开编辑object-cache.php文件,找到约620行左右的位置:
如上图所示,原始配置中,host写的是127.0.0.1,需要改成前面提前记下的Redis容器连接地址。
接着,在上图的这个代码段中(方括号[ ]之内),底部新添加一行代码配置:
'password' => '改成你的真实Redis容器连接密码',
将上面代码段中提示信息改成前面提前记下的Redis容器连接密码。
最终修改object-cache.php效果参考如下:
确认保存修改后的object-cache.php文件。
此时,去WordPress后台启用Redis Object Cache插件,会发现已经全部正常了:
注意事项:此方案中,我们手动修改了Redis Object Cache插件配置,因此建议在WordPress后台禁用此插件的自动更新,以免新版本又造成其他冲突问题。
一般来说,WordPress使用页面静态化缓存插件,我会推荐用WP Super Cache,简单又好用。
但,我调研并尝试了一番后,放弃了,因为WP Super Cache需要启用专家模式来规避Redis缓存的冲突,且需要手动修改服务器的nginx配置(因为1Panel的OpenResty实质就是nginx),还要去面板后台为网站配置静态化规则,相当复杂。我试了好多次,都是报错,决定放弃这个插件。
这里的故事背景是WP Super Cache作者原本是以Apache环境来开发的,nginx环境兼容并不太好。我看到有人在宝塔面板上实现类似效果,但1Panel面板可能还是比较新吧,兼容那些老教程的方案还是有点问题。
换另一个经典的静态化插件W3 Total Cache,没有任何问题,所以我才推荐这个方案。
之前不用W3 Total Cache是因为这个插件配置选项特别多,过于复杂了。不过,咱们只需要用到它的页面静态化功能,所以只启用对应选项即可,其他保持默认或者关闭状态。
如上图,你只要在W3 Total Cache启用页面缓存即可,页面缓存方式选磁盘。其他功能都不建议启用。
你可能会问,我怎么知道上面两种缓存措施有没有实际生效?
去网站前端页面检查下就知道了。
访问网站首页,浏览器右键查看源代码:
从上图可以看出,内存级和页面级缓存都生效了。
另外,从WordPress后台的站点健康检查页面可以看到已经启用了持久对象缓存,也就是本文中的Redis缓存。
打完收工。