ThinkPHP文件缓存通过缓存配置解析结果、模板编译产物和数据查询结果提升性能,需正确启用、控制路径并及时清理;配置缓存需开启'file'=>true并执行php think clear:config;模板缓存应设cache_prefix且开发时关闭;数据缓存须指定可写path、设过期时间、避免敏感信息;所有缓存均需手动清理验证。

ThinkPHP 文件缓存主要用来加速配置读取、模板编译和少量数据暂存,不是靠“把整个 PHP 文件缓存”来提速,而是通过缓存运行时生成的中间结果减少重复解析开销。关键在三点:启用正确、路径可控、清理及时。
配置文件缓存:避免每次加载都解析 config/ 目录
ThinkPHP 6+ 支持将 config/ 下的 PHP 配置文件自动编译为单一缓存文件(如 config.php.cache),跳过多次 include 和解析过程。
- 确保
config/cache.php中开启:'file' => true - 缓存路径默认是
runtime/config/,确认该目录存在且 Web 进程有写权限 - 上线后修改配置,必须执行
php think clear:config,否则新配置不生效
模板文件缓存:让 HTML 渲染不每次都编译
模板引擎(如 ThinkTemplate)会把 .html 模板编译成 PHP 脚本,缓存在 runtime/template/ 下。改了模板却没更新?大概率是缓存路径或前缀出问题。
- 检查实际生效路径:
var_dump(config('template.template_cache_path')); -
cache_prefix别留空或用纯数字,建议设为项目标识,例如'tp6_shop_' - 开发阶段务必关闭:
'template' => ['cache' => false],避免反复手动删目录
数据文件缓存:适合低频变动、中等体积的数据
用 Cache::set() 存数据库查询结果、API 返回值等,比 Redis 轻量,但注意文件 I/O 瓶颈。
立即学习“PHP免费学习笔记(深入)”;
- 驱动配置在
config/cache.php的'file'节点下,'path'必须指向可写目录(如runtime/cache/) - 设置合理过期时间,避免永久缓存导致数据陈旧;高频场景慎用,文件缓存并发读写性能不如 Redis
- 敏感数据别缓存,文件缓存无加密机制,仅适合非机密内容
清理与验证:缓存不自动刷新,得主动干预
文件缓存不会监听源文件变化,改完模板或配置后,必须人工触发清理或确认是否真被使用。
- 清模板缓存:
rm -rf runtime/template/或调用think\Cache::clear('template') - 清数据缓存:
Cache::clear()(清全部)或Cache::rm('key')(清单个) - 验证是否生效:查看
runtime/template/下是否有新生成的 PHP 编译文件,或用is_file()检查缓存路径是否存在



















