织梦模板缓存如何关闭

tplcache 调试 性能

为什么要关闭模板缓存

织梦的模板引擎会把编译后的模板缓存到 data/tplcache/ 目录,下次访问直接读取,省去重新解析的开销。但开发调试期间,这种缓存会让你「改了模板却看不到效果」,反复怀疑人生。调试期关闭缓存,上线后再开启,是织梦建站的标准操作。

方法一:后台一键开关(推荐)

后台 → 系统 → 系统基本参数 → 性能选项,找到「是否开启模板缓存」:

模板缓存:关闭 / 开启

保存后立即生效,无需重启。

方法二:手动改配置文件

直接修改 data/config.cache.inc.php

// 关闭模板缓存
$cfg_tpl_cache='N';

// 开启模板缓存
$cfg_tpl_cache='Y';

// 缓存有效期(秒),默认 3600
$cfg_tpl_cache_time=3600;

修改保存后,访问任意页面即可生效。

方法三:清空 tplcache 目录

即使缓存是开启的,也可以手动清空已有缓存强制刷新:

data/tplcache/*.inc    ← 模板编译缓存
data/cache/*.inc       ← 数据缓存(栏目、模型、配置等)
data/tplcache/*.php    ← 已编译的模板

Linux 服务器可执行:

rm -rf data/tplcache/*
rm -rf data/cache/*

清空后必须重新生成 HTML,否则前台报错。

注意:切勿删除 data/tplcache/ 目录本身,否则织梦无法写入新缓存,前台会报「目录不可写」错误,需手动重建并 chmod 777

开发期调试利器:动态浏览模式

除了关缓存,还可以临时切换为「动态浏览」模式,省去每次重新生成 HTML:

  1. 后台 → 核心 → 网站栏目管理 → 修改栏目 → 高级选项。
  2. 「栏目列表选项」改为「动态浏览」。
  3. 「文章命名规则」改为 {typedir}/view.php?aid={aid}

这样改完模板直接 F5 就能看效果,调试完再切回「静态」。

URL 强制刷新参数

不想改后台配置时,可以在访问 URL 后加 ?upcache=1?t=时间戳,强制织梦重新读取模板:

https://www.example.com/index.php?upcache=1
https://www.example.com/list.php?tid=5&t=1700000000

关闭数据缓存(SQL缓存)

除了模板缓存,织梦还有数据缓存。如果调试时连数据库改动也看不到效果,需要一并关闭:

$cfg_memcache_enable='N';   // 关闭 memcache
$cfg_dsql_cache='N';        // 关闭 SQL 查询缓存

上线后必做的优化

验证缓存是否真关闭

在模板里写一个 <!--DEBUG:?php echo time();?-->,刷新页面看时间戳是否每次变化。如果不变,说明缓存仍在生效。

行动建议

本地开发环境永远把模板缓存关掉,省下大量调试时间;正式环境则一定开起来,否则高峰期会被数据库拖垮。建议把缓存开关做成部署脚本的一部分,代码推到生产时自动把 $cfg_tpl_cache 改回 Y,避免人工遗漏。把缓存策略纳入正常的运维流程,网站性能和迭代效率才能两头兼顾。