Laravel 页面变慢主因是关键缓存未开启,必须执行 config:cache、route:cache、view:cache 三项基础缓存,并确保生产环境配置正确、目录可写、路由规范,再配合 Redis 缓存驱动及部署时自动刷新。

Laravel 页面变慢,十有八九是因为关键缓存没开。不是加个 Redis 就完事,而是得把几类核心缓存都“固化”成静态文件或预加载状态,让每次请求跳过重复解析和编译。
一、必须开启的三项基础缓存
这三项是 Laravel 生产环境提速的底线配置,缺一不可:
-
config:cache:把所有 config 文件合并成一个bootstrap/cache/config.php,避免每次请求都读十几二十个 PHP 配置文件 -
route:cache:把routes/web.php和routes/api.php编译成单个数组文件(如bootstrap/cache/routes-v7.php),跳过路由注册与匹配的动态过程 -
view:cache:提前把所有.blade.php模板编译为原生 PHP 文件,存进storage/framework/views/,首次访问不再卡在模板解析上
执行顺序建议:
php artisan config:clear php artisan route:clear php artisan view:clear php artisan config:cache php artisan route:cache php artisan view:cache
⚠️ 注意:
route:cache要求所有路由都是标准写法(不能用闭包、不能在中间件里动态注册、fallback 必须命名),否则会失败或 404。
二、确认环境与权限是否到位
缓存命令不会报错,但可能静默失效。检查三件事:
-
.env中确保:APP_ENV=production且APP_DEBUG=false(debug 开着时route:cache和config:cache直接被禁用) -
bootstrap/cache/目录对 Web 服务器用户(如www-data或nginx)可写,否则生成不了config.php或routes-v7.php - 运行
php artisan route:list看有没有Class not found或Method does not exist提示——说明控制器或中间件路径有问题,缓存前必须先修复
三、搭配缓存驱动提升运行时效率
基础缓存解决“启动慢”,运行时查询慢还得靠缓存驱动:
- 修改
.env:CACHE_DRIVER=redis(比 file 驱动快得多,尤其高并发) - 确保
config/database.php中redis配置正确(host、port、password、database) - 测试一下:
php artisan tinker -n→ 输入Cache::put('test', 'ok', 60),返回true即通 - 对高频不变数据(如站点配置、分类列表)用
Cache::remember()包裹查询,比如:$menu = Cache::remember('main_menu', 3600, fn() => Menu::all());
四、部署时别漏掉自动刷新
缓存是静态快照,代码改了就得重生成:
- CI/CD 脚本末尾加上
php artisan config:cache && php artisan route:cache && php artisan view:cache - 切忌在 Docker 构建阶段执行(此时源码还没复制进去),应在容器启动后、服务上线前运行
- 线上热更新代码后,务必同步执行
php artisan route:clear && php artisan config:clear,否则旧缓存还在生效
不复杂但容易忽略


















