ThinkPHP文件缓存最轻量、零依赖,适合开发环境或小型项目;需在config/cache.php中配置type为'File'、指定path路径并确保runtime/cache目录可写,调用Cache::set/get等统一接口操作。

ThinkPHP 的文件缓存(File 缓存)是最轻量、零依赖的缓存方式,适合开发环境、小型项目或对 Redis/Memcached 等服务不可用的部署场景。它不需额外安装扩展,只要 PHP 有写权限就能运行。
确认缓存驱动类型为 file
在 ThinkPHP 5.1/6.x/8.x 中,统一通过 config/cache.php 配置缓存行为。确保配置中明确指定 type 为 'file',且 default 指向该驱动:
- TP6/TP8 推荐写法(多驱动结构):
<?php
return [
'default' => 'file',
'prefix' => 'tp_',
'expire' => 3600,
'stores' => [
'file' => [
'type' => 'File',
'path' => runtime_path() . 'cache/',
'serialize' => true,
],
],
];
- TP5.1 可简化为单层配置(直接在 cache.php 写):
<?php
return [
'type' => 'file',
'path' => '../runtime/cache/',
'prefix' => 'app_',
'expire' => 0, // 0 表示永久缓存
];
立即学习“PHP免费学习笔记(深入)”;
检查缓存目录可写且路径合法
File 缓存依赖本地目录存储 .php 或 .dat 文件,必须满足:
- runtime/cache/ 目录存在且 PHP 进程有读写权限(Linux 常见问题:www-data 或 nginx 用户无写权)
-
path 值不能是相对路径如
./cache,建议用runtime_path() . 'cache/'或绝对路径 - 避免将缓存目录放在 Web 可访问路径下(如 public/cache),防止缓存文件被直接下载
使用 Cache 类进行基础操作
配置生效后,所有缓存调用走统一接口,无需关心底层是否是 file:
- 写入缓存:
Cache::set('user_123', ['name' => '李四'], 3600); - 读取缓存:
$data = Cache::get('user_123');(未命中返回null) - 删除缓存:
Cache::delete('user_123');或批量清空:Cache::clear(); - 判断是否存在:
Cache::has('user_123');
注意:file 驱动不支持标签(tag)、原子计数器等高级功能,如需按模块清理,建议靠 key 命名规范(例如统一加前缀 user:、config:)再手动遍历删除。
验证缓存是否真正写入磁盘
最直接的方式是查看 runtime/cache/ 目录下是否生成了对应文件:
- 默认 key 会经过哈希处理,如
user_123可能生成类似tp_app_user_123.php或xxx.dat文件 - 打开该文件,内容应为序列化后的数据(含有效期时间戳)
- 修改缓存值后,对应文件内容应更新;过期后文件可能被自动清理(取决于
expire和垃圾回收触发时机)



















