很多新手把织梦的"静态页面缓存"和"程序缓存"混为一谈,操作时常常清错对象,结果改了模板还不生效。其实这两层缓存存放位置、生成机制、生命周期完全不同,理解它们的差异才能精准解决问题。本文从本质、配置、对比三个维度展开。
一、本质区别:一个写 HTML,一个写序列化数据
1. 静态页面缓存
静态页面缓存指的是织梦"生成 HTML"功能产出的 .html 文件,存放在 /a/(默认栏目页/内容页目录)或自定义的静态目录下。用户访问前台时 Nginx/Apache 直接返回这个文件,PHP 与数据库完全不参与。这是织梦性能优于很多动态 CMS 的根本原因。
2. 程序缓存
程序缓存是织梦在 PHP 运行时把栏目配置、模型字段、TAG 列表、系统参数等高频读取的数据序列化后写到 /data/cache/ 下的 .inc、.php、.txt 文件里。下次需要这些数据时直接 include 或 file_get_contents,避免反复查库。它只在动态请求或后台操作时生效,前台静态页面看不到它的工作。
二、详细对比表
| 对比项 | 静态页面缓存 | 程序缓存 |
|---|---|---|
| 存储位置 | /a/、/news/ 等栏目目录 | /data/cache/、/data/static/ |
| 文件类型 | .html 纯静态 | .inc/.php/.txt 序列化 |
| 是否连数据库 | 否 | 是(首次生成时) |
| 触发更新 | 后台"生成"或发布文章 | 后台"清除缓存"或写入操作 |
| 用户访问 | Web 服务器直接返回 | PHP 运行时读取 |
| 体积 | 大(几 KB~数百 KB/页) | 小(几 KB~几十 KB/项) |
| 典型场景 | 前台所有页面 | 后台、动态页、tag、search |
三、配置示例
1. 静态页面缓存配置
后台 → 系统 → 系统基本参数 → 性能选项:
是否使用静态页面:是
静态页面保存目录:/a
栏目页命名规则:{typedir}/index.html
文章页命名规则:{typedir}/{aid}.html
列表页命名规则:{typedir}/list_{tid}_{page}.html
2. 程序缓存配置
// data/config.cache.inc.php
$cfg_cache_time=3600; // 程序缓存有效期(秒)
$cfg_memcache_enable='N'; // 是否启用 memcache
// 涉及代码位置 include/common.func.php
function GetCache($prefix, $key) { ... }
function SetCache($prefix, $key, $value, $timeout=3600) { ... }
程序缓存的核心函数是 GetCache/SetCache,织梦内核、plus 插件、自定义二开都会调用。
四、生命周期对比
静态页面缓存
1. 用户访问 example.com/news/1.html 2. Nginx 直接返回 /a/news/1.html,不经过 index.php 3. 站长在后台发布新文章 → 触发该栏目重新生成 4. 旧 HTML 被覆盖,新内容生效
程序缓存
1. 用户访问 example.com/plus/search.php(动态页)
2. PHP 调用 GetCache('search', $kw) 查找缓存
3. 命中:直接返回;未命中:查库后 SetCache 写入
4. 缓存到期或后台清除后失效
五、典型问题与排查
症状 A:前台文章内容没更新,但后台显示已发布。
原因:静态页面缓存未重新生成。解决:后台"生成—更新文档 HTML"。
症状 B:动态搜索页、tag 页数据滞后,但静态页正常。
原因:程序缓存未失效。解决:后台"系统—清除系统缓存",或删除 /data/cache/。
症状 C:改了系统参数没生效。
原因:程序缓存里的 config.cache.inc.php 等配置缓存未刷新。解决:后台"系统基本参数"页面底部点击"确定"会自动重建,或手工删除 /data/config.cache.inc.php。
六、注意事项
不要混淆清除动作:"清除系统缓存"只清程序缓存,不会动静态 HTML;"一键更新网站"只重新生成静态页,不会清程序缓存。两者必须配合使用。
动态页占主导的站点慎用静态:会员中心、电商、强交互站点如果开了静态生成会导致内容不同步,建议这类页面用动态+程序缓存即可。
七、实践建议
理解了静态缓存与程序缓存的本质差异后,建议在站点维护流程中固定两条动作:每次内容更新执行"生成静态页 + 清程序缓存",每次模板修改执行"重新生成 + CDN 刷新"。把这两条固化进运维 SOP,可以彻底告别"改了不生效"的反复困扰,让织梦站点的更新可预期、可验证。