config:cache 和 route:cache 是 Laravel 性能第一道门槛,必须在生产环境启用;未缓存时需动态加载二十多个配置文件并解析路由,缓存后仅读取单个 config.php 和 routes-v7.php 文件,可将启动时间从 20ms 压至 3ms。
和
必须在生产环境启用,否则 Laravel 每次请求都会重复解析全部配置和路由文件,启动开销直接翻倍。
为什么 config:cache 和 route:cache 是性能第一道门槛
没缓存时,Laravel 要 require 二十多个
文件、再执行
动态注册所有路由;缓存后,只读一个
和
—— 这不是“锦上添花”,而是从 20ms 启动时间压到 3ms 的硬性操作。
仅启用
就能减少约 40% 的配置加载耗时
对中大型项目效果更明显,尤其当路由数超 200 条时,匹配速度提升常达 5 倍以上
闭包路由(
)不支持缓存,必须改写为控制器方法
修改任何配置或路由后,必须手动运行
或
,否则变更不生效
with() 预加载不是“用了就行”,得看关联深度和字段粒度
解决 N+1 是基础,但滥用会导致“查得多、用得少”——比如
一次拉出三层嵌套,实际页面只显示用户名,其余全浪费。
只预加载真正需要的关联:用
限定字段,避免整张 users 表被 SELECT *
多层嵌套慎用
,优先考虑分步查询或 API 分页聚合
对大列表页,用
替代全量预加载,按需补数据
用
+
确认是否真减少了查询次数,别凭感觉
缓存键设计不当,比不缓存还危险
缓存失效逻辑混乱、键名无区分度,会导致用户看到别人的数据,或缓存永远不更新。这不是性能问题,是数据一致性事故。
Laravel 13.2.0
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
下载
别用固定字符串做键:
—— 所有用户共享同一份热门文章
带上下文:登录用户 ID、角色、地域等关键维度要进键名,例如
避免在循环里调用
,先批量查数据库再统一塞缓存,或用
用 Redis 的
(需开启
驱动并配置
)批量失效,比遍历 key 更可靠
OPcache 和 Composer autoloader 优化不是“部署脚本里加两行”就完事
PHP 层的优化容易被忽略,但它影响的是每个请求的底层执行效率,尤其在高并发下收益极明显。
在生产环境必须关闭,否则每次请求都检查 PHP 文件修改时间,白费 OPcache
生成绝对路径类映射,跳过 PSR-4 自动扫描,类加载快 30%+
确保
和
只包含真实需要的文件,冗余项会拖慢整个 autoloader
会禁用部分缓存机制并加载调试类,生产环境务必设为
,且不能靠 .env 覆盖 —— 要确认最终值
真正卡住性能的,往往不是某段 SQL 写得不够优雅,而是缓存键混了用户上下文、OPcache 没关 timestamp 校验、或者 route:cache 后忘了清缓存却还在改闭包路由。这些点不显眼,但一出问题就是线上事故。
config:cacheroute:cacheconfig/*.phpRouteServiceProviderbootstrap/cache/config.phpbootstrap/cache/routes-v7.phpconfig:cacheroute:cacheRoute::get('/', function () { ... })php artisan config:clearphp artisan route:clearwith()Post::with('user.posts.comments')->get()with('user:id,name,avatar')with()loadMissing()DB::enableQueryLog()dd(DB::getQueryLog())Cache::remember('posts', 3600, ...)'posts_homepage_user_'.$userIdCache::get()Cache::many()cache tagsrediscache.tagsopcache.validate_timestamps=0composer dump-autoload --classmap-authoritativeautoload.filesautoload.classmapAPP_DEBUG=truefalse