ThinkPHP 6.1 的 HTML 静态缓存仅对 view() 渲染的 PHP 模板生效,不适用于 uni-app 等纯前端 H5;需配置 cache.php 启用 html 驱动,URL 无动态参数且模板无用户专属内容方可生效。

ThinkPHP 6.1 的静态缓存(HTML 缓存)默认不直接缓存 H5 页面的完整 HTML 输出,因为 H5 页面通常由前端路由(如 uni-app 的 router 或 Vue Router)驱动,后端只提供 API 接口;但如果你的 H5 是服务端渲染(SSR)或纯 PHP 模板输出(比如用 view() 渲染的静态页面),那就可以启用并配置静态缓存。
确认是否走 view 渲染路径
静态缓存只对使用 think\View 渲染的模板生效,例如:
-
return view('index');—— 会生成 HTML 文件缓存 -
return json([...]);或 API 接口 —— 不参与静态缓存
如果你的 H5 页面是 uni-app 打包出来的纯前端资源(index.html + js/css),那它本身不经过 ThinkPHP 渲染,也就无法被 TP 的静态缓存机制捕获。这种情况下,应改用 Nginx 层级的 HTTP 缓存或 CDN 缓存。
开启并配置 HTML 静态缓存
在 config/cache.php 中启用 html 缓存类型,并设置对应驱动为 File:
立即学习“PHP免费学习笔记(深入)”;
- 确保
'default' => 'html'或显式调用Cache::store('html') - 在控制器中使用:
cache('html', true);开启当前请求的 HTML 缓存 - 缓存时间单位为秒,例如:
cache('html', 3600);缓存 1 小时
注意:该缓存会把 view() 渲染后的完整 HTML 写入 runtime/html/ 目录,下次同 URL 请求将跳过 PHP 渲染,直接输出缓存文件。
适配 H5 页面的关键细节
要让 H5 页面真正被缓存,需满足以下条件:
- 入口路由必须指向一个使用
view()渲染的控制器方法(不能是纯 API) - URL 中不能含动态参数(如
?id=123),否则默认不缓存;如需支持,得在config/cache.php中配置'html' => ['support_params' => true] - 避免在模板中写入用户专属内容(如登录用户名、实时时间),否则缓存会污染不同用户看到的内容
- 若 H5 使用了 history 模式路由(如
/user/profile),需确保 Nginx/Apache 已正确回退到index.php,否则静态缓存文件不会命中
替代方案:更实用的 H5 缓存策略
对于标准 uni-app H5 项目,推荐组合使用:
-
Nginx expires 指令:对
.html、.js、.css设置长缓存(如expires 1h;) - 版本哈希文件名:uni-app 构建时自动添加 hash,配合强缓存可避免更新失效
- Service Worker 离线缓存:适用于 PWA 类 H5,实现本地优先加载
TP 的 HTML 静态缓存更适合后台管理页、活动页等低频更新、高访问量的 PHP 渲染页面,而非 uni-app 构建的标准 H5。



















