在thinkphp 3.2中,需分类型关闭缓存:数据缓存通过设'data_cache_type'=>'file'并确保目录不可写;静态缓存设'html_cache_on'=>false;编译缓存启用app_debug=true;查询缓存需代码中调用cache(false)。

在 ThinkPHP 3.2 中,关闭缓存需根据缓存类型分别处理,没有单一“开关”能一并禁用所有缓存。常见缓存包括:数据缓存(S函数)、静态页面缓存(HTML_CACHE)、编译缓存(Runtime/common~runtime.php) 和 查询缓存(Model::cache())。修改位置主要在配置文件中,关键路径如下:
一、关闭数据缓存(S() 函数使用的缓存)
修改项目主配置文件:/Application/Common/Conf/config.php
将以下配置项设为 'File' 并设置超时为 0,或直接禁用缓存类型:
'DATA_CACHE_TYPE' => 'File', // 改为 'File' 可避免 Redis/Memcache 依赖;设为 '' 或 null 会报错,不推荐 'DATA_CACHE_TIME' => 0, // 0 表示永不过期,但若想“逻辑上关闭”,可设极小值如 1 秒 // 更彻底的做法:注释或删除 'DATA_CACHE_TYPE' 配置,框架将回退到默认 'File',但仍有缓存行为
⚠️ 注意:TP3.2 没有 DATA_CACHE_OFF 这类开关。真正“关闭 S 缓存”的等效做法是——让缓存写入失败,例如:
- 把
'DATA_CACHE_TYPE' => 'Redis'改为一个不存在的类型(如'None'),运行时会抛出异常,S() 将失效; - 或确保
RUNTIME_PATH不可写,使 File 缓存无法保存。
但生产环境不建议用异常方式,稳妥做法是业务层绕过 S(),改用直查。
二、关闭静态页面缓存(HTML_CACHE)
静态缓存由 HTML_CACHE_ON 控制,修改位置有两个:
- 全局关闭 →
/Application/Common/Conf/config.php - 模块级关闭 →
/Application/Home/Conf/config.php(以 Home 模块为例)
添加或修改:
'HTML_CACHE_ON' => false, // 关键:设为 false 即彻底禁用静态缓存 'HTML_CACHE_TIME' => 0, 'HTML_CACHE_RULES' => array(), // 清空规则更保险
✅ 生效前提:该配置必须在 APP_DEBUG = false(部署模式)下才实际起作用;调试模式下 HTML 缓存默认不生效。
三、关闭编译缓存(common~runtime.php)
编译缓存自动启用,无需显式开启,但可通过以下方式禁用:
-
确保
APP_DEBUG = true:只要入口文件index.php中定义了define('APP_DEBUG', true);编译缓存就完全不会生成,每次请求都重新加载源文件。
或手动删掉编译文件:
删除/Application/Runtime/common~runtime.php,并确保RUNTIME_PATH目录不可写(如 chmod 555),即可阻止重建。
四、关闭模型查询缓存(Model->cache())
这类缓存是代码级调用,不由 config 控制,需修改业务逻辑:
// 原来带缓存的写法
$users = M('User')->cache(true)->select();
// 关闭缓存:去掉 cache() 或设为 false
$users = M('User')->cache(false)->select();
// 或直接不调用 cache()
$users = M('User')->select();
如需全局禁用,可在模型基类(如 /Application/Common/Model/BaseModel.class.php)中重写 select() 方法,过滤掉缓存参数——但非常规做法,仅特殊场景使用。
总结关键配置项位置与值:
| 缓存类型 | 配置文件位置 | 关键配置项 | 推荐值 |
|---|---|---|---|
| 数据缓存(S) | /Common/Conf/config.php |
'DATA_CACHE_TYPE' |
'File'(配合目录不可写可实效禁用) |
| 静态页面缓存 |
/Common/Conf/config.php 或模块 config |
'HTML_CACHE_ON' |
false |
| 编译缓存 | 入口文件 index.php
|
APP_DEBUG |
true |
| 查询缓存 | 业务代码中调用 | ->cache(false) |
显式关闭 |
不复杂但容易忽略:改完配置后,务必清空 /Application/Runtime/Cache/ 和 /Runtime/Temp/ 目录,否则旧缓存仍可能生效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











