Laravel项目中InertiaJS SSR加载应用耗时长是什么原因?
结论先行
本地开发环境下Laravel+Jetstream+InertiaJS SSR的页面加载长等待是开发模式专属的正常现象,生产环境不会复现该问题。
原因说明
- 本地开发时启动的Inertia SSR服务默认运行在debug模式,Vite、Vue的热更新模块会实时监听所有组件文件变更、生成sourcemap、做增量编译校验,哪怕是空项目,每次请求触发的SSR渲染都会走一遍实时文件检查、热更新上下文刷新逻辑,这部分就是你性能录制里抓到的主要耗时来源。
- 你手里其他无SSR的Laravel项目加载快,是因为这类项目只需要PHP端解析返回响应,没有Node端SSR服务的实时编译开销,本地开发下本身链路更短。
- 开发模式的设计优先级是调试便利性而非响应速度,所有热更新、错误定位、实时编译能力本身就会牺牲运行速度,和是否写了业务代码没有关系。
生产环境实际表现
目前大量线上运行的同栈项目实测:
生产环境构建完成后,空项目的SSR首屏响应耗时普遍在20-50ms区间,和原生Blade渲染的Laravel项目响应速度无感知差异,完全不会出现开发环境下的数秒等待问题。
生产环境下SSR服务会直接读取预构建好的压缩后静态资源,没有实时编译、文件监听的额外开销,渲染效率非常高。
本地验证生产速度的方法
你可以在本地直接模拟生产环境配置验证效果,执行以下命令即可:
# 1. 先把.env里的环境配置切到生产模式 APP_ENV=production APP_DEBUG=false # 2. 构建压缩后的前端生产资源 npm run build # 3. 启动无debug模式的SSR服务 php artisan inertia:start-ssr
配置完成后再刷新页面,就能得到和线上一致的加载速度,不会再有长等待。验证完记得把环境配置切回开发模式,否则会丢失热更新、详细错误提示等开发调试能力。
生产部署注意点
- 部署时不要用开发模式启动SSR服务,必须先执行
npm run build完成前端资源构建 - SSR进程建议用Supervisor做进程守护,避免进程意外退出导致服务不可用
- 开启PHP OPcache、合理配置SSR渲染缓存后,响应速度还能进一步提升
内容的提问来源于stack exchange,提问作者Mostafa Said
相关产品推荐
相关产品推荐

