装了缓存插件网站却不更新?我排查了3小时终于找到这个坑
上周给客户部署WordPress站点时遇到个诡异问题:明明更新了文章内容,前台却死活不显示变化。作为老司机我第一反应就是缓存问题,但排查过程却比想象中曲折得多。今天就把这次踩坑经历分享给大家,说不定能帮你省下几小时debug时间。
一、经典三件套排查法
遇到页面不更新,我的标准操作流程是这样的:
- Ctrl+F5 强制刷新(别笑,真有人忘了这步)
- 清空浏览器缓存并禁用所有扩展
- 在隐身模式访问页面
结果这次三件套全部失效!这时候我才意识到问题可能出在服务端。
二、插件配置里的隐藏陷阱
站点用的是WP Rocket插件,配置页面我反复检查了这些选项:
// 典型缓存排除规则示例
add_filter( 'rocket_cache_reject_uri', function( $urls ) {
return array_merge( $urls, [
'/checkout/',
'/my-account/'
] );
} );
发现客户竟然在「从不缓存页面」里添加了/*
这样的通配符!这相当于让缓存功能完全失效,但诡异的是页面却依然不更新…
三、CDN才是罪魁祸首
当我准备放弃时突然想到:网站接入了Cloudflare!立即做了两个关键操作:
- 在Cloudflare面板开启「开发模式」
- 手动清除CDN缓存(在缓存 → 配置 → 清除缓存)
果然页面立刻更新了!原来WP Rocket和Cloudflare的缓存机制产生了冲突:
💡 实战经验: 当同时使用服务器缓存和CDN时,CDN的缓存TTL可能比插件设置更长。建议在CDN端设置短缓存周期,或通过API实现内容更新时自动清除CDN缓存。
四、终极解决方案
最后我采取了组合拳:
- 在WP Rocket中设置合理的缓存排除规则
- 配置Cloudflare页面规则,对/wp-admin/* 等路径关闭缓存
- 安装官方Cloudflare插件实现自动缓存清除
现在每次内容更新后,都能看到控制台出现这样的提示就安心了:
[Cloudflare] Successfully purged 3 files
这次经历让我深刻体会到:缓存问题不能只看表面。下次如果你也遇到类似情况,不妨按照这个排查路线走一遍,说不定会有意外发现呢?
太实用了!我也遇到过这个问题,折腾了好久才发现是CDN缓存的问题
感谢分享,刚好遇到同样的问题,明天去试试这个方法
老哥稳啊,这排查思路很清晰,学到了👍
我一般都是直接清空所有缓存,从浏览器到服务器,简单粗暴😂