wordpress使用cdn后,静态资源被cdn缓存,起到部分加速作用,动态内容不能被cdn缓存,因此加速效果有限。即使通过rewrite设置伪静态,也不能避免wordpress查询数据库。因此文档中将动态内容存入redis作为缓存,加速访问。另外,redis作为内存型数据库,默认情况下有多少内存吃多少内存,不建议内存2G以下内存使用,否则可能起到反效果。
具体过程如下:
1,安装redis,如有可忽略此步骤。
2,安装php-redis组件,如有可忽略此步骤。
3,登录wordpress后台,安装Redis Object Cache插件,安装后启用之。
4,修改/wp-content/plugins/redis-cache/includes/object-cache.php文件,增加密码选项,如果redis没有密码,此步骤可忽略。(这里感觉好多文档是假的,只让在wp-config.php中定义redis密码,实际上在启用插件时,会复制object-cache.php到wp-content目录下,只修改wp-config.php并不能使缓存生效)。
这是文件原来的状态。
增加密码配置。
5,修改wp-config.php,增加redis配置。
define(‘WP_REDIS_CLIENT’, ‘pecl’); # 指定用于与Redis通信的客户端, pecl 即 The PHP Extension Community Library
define(‘WP_REDIS_SCHEME’, ‘tcp’); # 指定用于与Redis实例进行通信的协议
define(‘WP_REDIS_HOST’, ‘127.0.0.1’); # Redis服务器的IP或主机名
define(‘WP_REDIS_PORT’, ‘6379’); # Redis端口
define(‘WP_REDIS_DATABASE’, ‘0’); # 接受用于使用该SELECT命令自动选择逻辑数据库的数值
define(‘WP_REDIS_PASSWORD’, ”); # Redis密码
define(‘WP_CACHE_KEY_SALT’, ‘wp_’); # 设置所有缓存键的前缀(Wordpress多站点模式下使用)
define(‘WP_REDIS_MAXTTL’, ‘86400’);
6,设置–>Redis中开启插件。
7,看Status变为Connected,配置完成。
这里好像有个bug,启用了密码之后这里仍然显示没有启用密码。
至此配置完成,下面进行验证:
8,先打开redis-cli,在随意打开页面,看到有数据进入redis即缓存生效。
redis-cli -a 123456 monitor
后续问题:
1,如此配置后出现后台不能登陆的问题,删除所有key后可以登录,怀疑是redis中缓存了用户登录信息。
wp-config.php中删掉这一行即可恢复,看起来是多站点使用的,不知道为什么会这样。
define(‘WP_CACHE_KEY_SALT’, ‘wp_’);
本文链接地址: https://danteng.org/wordpress-cached-by-redis-object-cache/
我只改了object-cache.php怪不得不行。不知道内网增加密码有没有用
是要给redis设置密码?内网设置redis密码有必要,redis有个漏洞能获取到服务器权限。