WEB主题公园
WordPress原创主题,高端网站模板建站,网站模板建站资源以及开发知识分享,尽在WEB主题公园
WEB主题公园致力于开发适合中国人习惯的中文WordPress网站模板,并提供全程视频教程,让您能够轻松的使用网站模板建立好自己的网站!
同服务器多个WordPress网站,使用持久化对象缓存的注意事项
WordPress对象缓存的作用,以及对象缓存的种类
持久化对象缓存作为WordPress官方推荐的必要缓存手段,可以极大的降低WordPress对服务器的资源消耗,并且能够极大的加快网站的响应速度,但如果我们的同一台服务器部署了多个WordPress网站,就需要注意隔离他们的缓存,否则可能会造成缓存串站的混乱情况。
WordPress的缓存层次
内部对象缓存:WordPress核心自带的非持久化缓存,请求结束后销毁
持久对象缓存:Redis/Memcached等外部系统提供,跨请求持久化
页面缓存:完整HTML页面缓存
操作码缓存:PHP字节码缓存(OPcache)
Redis和Memcached主要实现持久对象缓存层,替代WordPress默认的非持久化缓存。
Redis介绍
Redis作为高级键值存储系统,通过替换WordPress默认的对象缓存机制工作。当WordPress请求数据(如文章、选项)时,首先检查Redis中是否存在对应缓存项;若命中则直接返回数据,跳过数据库查询;若未命中则从数据库获取数据后序列化存入Redis,并设置过期时间。Redis的核心优势在于支持丰富数据结构、数据持久化以及精确的缓存失效控制,能有效处理高并发请求。它通过唯一键前缀隔离多站点数据,利用内存高速读写特性,将数据库查询时间从毫秒级降至微秒级,显著提升WordPress响应速度和扩展能力,特别适合中大型站点和复杂应用场景。
小配置服务器使用Redis,如4核4G以下的服务器,可能会出现Redis挂掉的情况,导致数据库错误,中小型网站不推荐。
Memcached介绍
Memcached作为轻量级分布式内存缓存系统,通过WordPress对象缓存API集成到请求流程中。其工作原理是拦截数据库查询结果,将序列化后的数据存储在内存中,后续相同请求直接从内存读取。不同于Redis,Memcached采用更简单的架构,不支持数据持久化和复杂数据结构,但具有极低的系统开销和更高的吞吐量。在WordPress中,它使用"软清空"机制管理缓存失效——通过全局版本号标记而非实际删除数据,依赖LRU算法自动淘汰旧项。Memcached内存管理采用预分配slab机制,虽配置简单但缺乏精细控制,最适合高流量、简单缓存需求的WordPress站点,尤其在内存资源有限的环境中表现优异。
中小型配置服务器,强烈推荐。
同服务器多个网站配置Memcached需要注意
1.强制缓存键隔离
每个站点必须配置唯一前缀:这是Memcached多站点环境最关键的要求,前缀需足够独特:建议包含站点域名或ID,避免任何可能的冲突
无前缀隔离的严重后果:会导致用户登录状态混乱、内容交叉显示等严重安全问题,配置文件wp-config.php中添加配置代码:
define('WP_CACHE_KEY_SALT', 'site1_'); //每个站点使用不同前缀,site1_,可以用你的域名替代,如themepark.com.cn可以替代为:themepark_com_cn
2.每个WordPress的数据库表前缀不要设为一样
如果你的多个WordPress网站的表前缀都设为一样的话,即时加入了缓存键值隔离,也可能会出现数据内容交叉混乱的问题,所以最根本的解决方式是各个WordPress网站的表前缀不要设为一样,特别是开启了WordPress多站点的网站,一定不要和其他WordPress网站的数据库表前缀一样,否则大概率会出现问题。
3.设置定时清理缓存,宝塔可以设置每日自动释放缓存
Memcached的特性是储存数据到内存中,我们可以通过每日自动释放缓存的计划任务来定时清理缓存,如果你使用的宝塔面板,可以在计划任务中,设置每日凌晨释放缓存的计划即可。
4.故障隔离
添加配置单个站点Memcached故障时回退到内部缓存,配置文件wp-config.php中添加配置代码
define('WP_MEMCACHED_DISABLE_FAILBACK', false);
同服务器多个网站配置Redis需要注意
1.缓存键隔离
必须为每个站点设置唯一前缀,可以在配置文件wp-config.php中添加配置代码:
define('WP_CACHE_KEY_SALT', 'site1_'); // 每个站点使用不同前缀,site1_,可以用你的域名替代,如themepark.com.cn可以替代为:themepark_com_cn
define( 'WP_REDIS_PREFIX', '你的域名' );
2.Redis数据库分离
在配置文件中为每个站点分配独立数据库:
define('WP_REDIS_DATABASE', '0'); // 站点1使用DB 0
Redis默认提供16个数据库(0-15),合理分配可实现物理隔离
3.连接配置优化
避免重复连接:配置连接池或持久连接,设置合理超时:防止一个站点的问题影响其他站点
在配置文件中加入以下配置
define('WP_REDIS_TIMEOUT', '1'); // 秒
define('WP_REDIS_READ_TIMEOUT', '1'); // 秒
4.安全隔离措施
为Redis启用密码访问,在WordPress中配置密码:
define('WP_REDIS_PASSWORD', '你的Redis密码');
如未标明出处,所有文章均为WEB主题公园原创,如需转载,请附上原文地址,感谢您的支持和关注。
本文地址:https://www.themepark.com.cn/tfwqdgwordpresswzsydxhcdzysx.html
推荐阅读
- 2019年3月21日
- 2016年10月27日
- 2016年8月24日
- 2013年9月19日
- 2013年11月9日
- 2015年7月9日
- 2018年3月2日
- 2017年2月20日
- 2013年10月10日
- 2013年8月1日




