三层缓存:改了没反应,先分清是哪一层冻住的
设置字典、模板编译、整页 HTML 三层缓存各自的时间与清除方式,加上一张「改了什么该查哪层」的对照表,以及排查时最省时间的一个技巧。
三层分别是什么

| 层 | 存的东西 | 默认时间 | 怎么清 |
|---|---|---|---|
| ① 设置字典 | 站点设置、插件设置读进内存的一份副本 | 约 1 小时自动过期 | 后台「清除缓存」,或保存一次任意设置 |
| ② 模板编译 | cache/theme/ 下模板翻成的 asp | 不过期,改了模板必须删 | 删 cache/theme/ 下内容(模板管理里也有清理入口) |
| ③ 整页缓存 | cache/html/*.pcache 拼好的整页 HTML | 默认 600 秒 | 删 cache/html/,或后台保存内容时自动失效 |
改了什么该查哪层
| 你改的是 | 先查哪层 | 怎么确认 |
|---|---|---|
| 后台改文章、改栏目 | ③ 整页 | 换一个很久没人访问的栏目页对比 |
theme/ 下的模板 | ② 编译 | 删 cache/theme 与 cache/html 各一次 |
css / js | 浏览器缓存 | 看地址尾巴的 ?v= 变没变,见第二十一章 |
| 站点设置 | ① 字典 | 不清就是旧值,最多等一小时 |
| 直接改数据库(脚本、恢复备份) | 三层都要清,另外还要刷新栏目字段清单 | 典型签名是「名字是新的、链接是旧的」 |
最省事的清法
- 后台点一次「清除缓存」,三层一起清,日常够用,不必手工删文件。
- 清完要重新访问同一个网址来看效果,不要用浏览器后退——后退看到的是浏览器里那一页。
- 排查时最有用的一招:拿一个很久没被访问的旧页面当对照,新旧渲染的差别一眼能看出来。
开了「模板缓存」之后改模板看不到效果,是这一层最常见的误判。它不是没保存,是编译结果还是旧的。开发期建议把模板缓存关掉(第五章)。
缓存不是越少越好
整页缓存是本站响应速度的主要来源:命中时不需要查库拼页。关掉它换来的是「改完立刻看到」,代价是每个访客都要重新拼一次页面。日常维护的正确姿势是留着缓存,改完手动清一次。
