织梦模板不更新是什么原因

模板缓存 生成HTML 故障排查

问题背景

不少织梦站长在 templets/ 里改了半天模板,前台刷新却纹丝不动,怀疑代码写错,其实是织梦的「多层缓存」在作怪。织梦默认是静态发布,HTML 已生成在 a/list/ 等目录,光改模板还不够,必须让程序重新生成一遍。

七大常见原因排查清单

1. 没有重新生成 HTML

最常见原因。后台 → 生成 → 一键更新网站,或单独更新栏目/文档 HTML。

2. 浏览器或 CDN 缓存

F5 普通刷新不够,要用 Ctrl + F5 强刷;如果有 CDN,去 CDN 控制台刷新预热。

3. 改错风格目录

织梦允许多套模板并存,「系统 → 系统基本参数 → 模板默认风格」决定实际使用哪套。你改的是 default,但后台配的是 mystyle,自然不生效。

系统基本参数 → 模板默认风格:mystyle

4. 模板缓存未清

织梦会把编译后的模板缓存到 data/tplcache/,删除该目录下所有 .inc 文件即可。

data/tplcache/*.inc   ← 全部删除
data/cache/*.inc      ← 一并清理更保险

5. 模板引擎配置关闭了模板检测

检查 data/config.cache.inc.php 中:

$cfg_tpl_cache='N';   // 模板缓存,调试期建议关闭

6. 文件权限问题

模板文件或 data/tplcache/ 没有写入权限(Linux 常见),chmod 755 并将所有者设为 www

7. 标签语法错误导致整段被丢弃

比如 {dede:arclist} 没闭合,整块代码被模板引擎忽略。开启 PHP 错误显示查看具体行号。

标准排查流程

  1. 后台一键更新网站 → 强刷浏览器,确认问题依旧。
  2. 查看页面源码,搜索你新加的特征字符(如某个 class 名),判断是否是 HTML 没更新。
  3. 核对模板默认风格配置路径。
  4. 清空 data/tplcache/data/cache/
  5. 检查模板文件权限和编码(必须 UTF-8 无 BOM)。
  6. 排查标签闭合情况,临时删一段测试是否恢复。
注意:生产环境调试完毕后,记得把 $cfg_tplcache 改回 Y,否则每次访问都要重新编译模板,影响性能。

UTF-8 BOM 引发的怪象

用记事本另存模板文件很容易引入 BOM,导致页面顶部出现空白行,{dede:include} 失效。用 Notepad++ 或 VSCode 另存为「UTF-8 无 BOM」即可。

调试期建议

建议把生成模式从「静态」临时切换为「动态浏览」(前台 URL 加 ?upcache=1 也行),改完模板直接刷新就能看到效果,调试完再切回静态并执行一键更新。养成「改模板 → 清 tplcache → 重新生成」三步走习惯,可以省下大半的排错时间,让站点的迭代节奏跟上内容更新的步伐。