ThinkPHP5.0.24默认不开启缓存,需手动配置模板缓存('tpl_cache'=>true)、关闭调试模式('app_debug'=>false)、执行optimize命令生成配置/路由/字段缓存,并可选启用请求缓存和Redis缓存。

ThinkPHP5.0.24 默认不开启任何缓存机制,页面加载慢、重复解析模板、频繁读取配置等问题都源于缓存未启用。要真正提升性能,需分三类配置:模板缓存(编译层)、请求缓存(响应层)、Redis等外部缓存(数据层)。下面按生产环境常用顺序说明关键操作。
一、开启模板缓存(必须做)
这是最基础也最有效的优化,避免每次请求都重新编译 {volist}、{\$name} 等模板语法。
- 打开
application/config.php,在'template' => []数组中添加:'tpl_cache' => true - 确保
runtime/temp/目录存在且 Web 服务器有写权限(如 Linux 下执行chmod -R 755 runtime) - 可选:设置缓存有效期(单位秒),例如 1 小时:
'tpl_cache_time' => 3600 - 关闭调试模式——否则模板缓存会被绕过:
'app_debug' => false
二、生成静态缓存文件(部署时执行一次)
这些命令将配置、路由、字段定义等预编译为 PHP 文件,减少运行时解析开销。
- 在项目根目录执行:
php think optimize:config(合并并缓存所有配置) -
php think optimize:route(生成高效路由匹配表) -
php think optimize:schema(缓存数据库表结构,避免每次查information_schema) -
php think optimize:autoload(生成类映射,加速自动加载)
三、启用请求缓存(针对固定内容页面)
适用于文章页、产品详情页等更新不频繁的动态 URL,直接缓存完整 HTML 响应。
立即学习“PHP免费学习笔记(深入)”;
- 在
route/route.php中为路由添加->cache(): - 简单用法(缓存 1 小时):
Route::get('article/:id', 'index/article/read')->cache(3600); - 精细控制(只基于
id参数生成缓存,忽略其他查询参数):Route::get('product/:id', 'index/product/detail')->cache(['expire' => 7200, 'params' => ['id']]); - 缓存文件默认存于
runtime/request_cache/,无需额外配置驱动
四、配置 Redis 缓存(可选但推荐)
若已部署 Redis 服务,可将高频数据(如用户会话、热门列表)迁至内存存储。
- 确认 PHP 已启用
redis扩展:php -m | grep redis必须输出redis - 修改
application/config.php的'cache'配置块:
config/cache.php,所有缓存配置必须写在 application/config.php 中
-
'cache' => ['type' => 'redis','host' => '127.0.0.1','port' => 6379,'password' => '','expire' => 3600,'prefix' => 'tp5_',] - 测试是否生效:
Cache::set('test', 'ok', 60);→dump(Cache::get('test'));应输出ok



















