迅睿CMS 缓存机制解析:为什么改了内容不生效

· 迅睿CMS · 阅读 1
摘要

先说结论迅睿CMS 的缓存是多层叠加的:程序缓存、模板编译缓存、浏览器缓存、CDN 缓存。改了内容不生效,90% 是后三层在作怪,而不是程序没保存。一、四层缓存各管什么层级位置失效方式程序数据缓存cache/ 目录后台清缓存模板编译缓存ca

先说结论

迅睿CMS 的缓存是多层叠加的:程序缓存、模板编译缓存、浏览器缓存、CDN 缓存。改了内容不生效,90% 是后三层在作怪,而不是程序没保存。

一、四层缓存各管什么

层级位置失效方式
程序数据缓存cache/ 目录后台清缓存
模板编译缓存cache/template/改模板后自动重编
浏览器缓存用户本地强制刷新 Ctrl+F5
CDN 缓存CDN 节点CDN 后台刷新 URL

二、按现象定位

1. 后台改了文章,前台还是旧的

  • 先清程序缓存;
  • 再看是否有 CDN,刷新对应 URL;
  • 用无痕窗口访问,排除浏览器缓存。

2. 改了模板,页面没变化

  • 确认改的是正在使用的模板,不是备份目录;
  • 清缓存后模板会自动重编;
  • 若仍不变,检查 cache/template/ 是否有写权限。

3. 部分页面变,部分不变

典型的分页缓存问题:列表第一页生成了缓存,后续页面没生成。清一次全站缓存即可。

4. 登录后看到旧内容,游客看到新的

说明登录用户命中了不同的缓存策略。检查是否有页面缓存插件把登录状态也缓存了。

三、清缓存的正确顺序

  1. 程序缓存(后台一键清除);
  2. CDN 缓存(刷新 URL 或全站);
  3. 浏览器缓存(无痕窗口验证);
  4. OPcache(若有,systemctl reload php-fpm)。

顺序反了会出现「清了还是旧的」,因为上游缓存会把旧内容重新灌回去。

四、什么时候该关缓存

  • 开发调试模板期间;
  • 批量导入/修改内容后需要立即确认结果;
  • 排查「保存成功但不显示」类问题时。

生产环境排查完记得及时恢复开启,否则会影响性能。

五、防止缓存问题复发

  1. 改内容后养成「先无痕验证,再判断是否 bug」的习惯;
  2. 上线 CDN 时记录好刷新方式,写进运维手册;
  3. 批量操作后统一清一次缓存,不要逐条试。

总结

缓存问题看起来玄,本质是不知道有几层、各层怎么失效。记住「程序 → CDN → 浏览器 → OPcache」这个顺序,绝大多数「改了不生效」都能在 5 分钟内解决。