需关闭调试模式、开启HTML缓存并配置规则才能启用ThinkPHP5.0页面级静态缓存;否则仍走MVC流程,不生成.shtml文件。

要在ThinkPHP5.0中启用页面级静态缓存,需同时配置框架缓存开关、HTML缓存驱动及规则,缺一不可,否则请求仍走完整MVC流程,不会生成.shtm文件。
确认应用调试模式已关闭
打开 application/config.php,将 【'app_debug' => true】 改为 【'app_debug' => false】。静态缓存仅在非调试模式下生效,开启调试时所有缓存逻辑被强制跳过。
开启HTML静态缓存并设置基础参数
在同个 config.php 文件中,添加或修改以下配置项:
'html_cache_on' => true,
'html_cache_time' => 3600,
'html_file_suffix' => '.shtml',
'html_cache_compile_type' => 'file',
立即学习“PHP免费学习笔记(深入)”;
其中 【'html_cache_time' 值必须为正整数】,单位是秒;若设为0,部分版本会静默禁用缓存写入。
定义缓存规则
继续在 config.php 中补充 html_cache_rules 数组,至少配置一条有效规则:
方法一:全站统一缓存(推荐测试用)
'*' => array('{:module}/{:controller}/{:action}_{$_SERVER.REQUEST_URI|md5}', 1800),
方法二:按控制器限定(生产常用)
'Index:' => array('{:module}/{:controller}/{:action}', 7200),
方法三:精确到某操作(如首页不缓存,列表页缓存)
'Index/index' => array('{:module}/{:controller}/list_{id|intval}', 300),
注意:规则键名中的冒号不能漏掉,【'Index:' 表示 Index 控制器下所有操作,而 'Index' 仅代表名为 Index 的操作】,写错将导致规则完全不匹配。
验证缓存是否生成
第一步:清空 runtime/html/ 目录下的全部文件;
第二步:访问一个已匹配缓存规则的URL(例如 http://localhost/tp5/public/index.php/index/index);
第三步:立即检查 runtime/html/ 目录,确认是否生成了以 .shtml 为后缀的文件;
第四步:再次刷新该页面,观察响应头中是否包含 X-Powered-By: ThinkPHP5 且无 X-Debug 字样——这表示请求已被静态文件直接响应,未进入控制器。



















