Laravel怎么加速项目响应_Laravel开启Opcache与JIT提升效率【优化】

3次阅读

opcache 和 jit 是 php 层优化机制,需修改 php.ini 并重启服务生效;laravel 项目应优先执行 config:cache、route:cache、view:cache 命令,并根据项目规模调大 opcache.memory_consumption 至 512mb 或 1024mb。

Laravel怎么加速项目响应_Laravel开启Opcache与JIT提升效率【优化】

Opcache 和 JIT 不是 Laravel 自己的功能,而是 PHP 层的优化机制;直接在 Laravel 里“开启”没意义,必须改 PHP 配置并验证生效。

确认当前 PHP 是否已启用 Opcache

很多 Laravel 项目跑在 docker 或共享主机上,opcache.enable 默认是 0(关闭)。不检查就调参,等于白忙。

执行以下命令查看真实状态:

php -i | grep opcache

重点关注这几项是否为 On

  • opcache.enable => On
  • opcache.enable_cli => Off(CLI 下默认关,Laravel artisan 命令不走 Opcache,但 Web 请求会走)
  • opcache.revalidate_freq => 2(建议设为 0 仅开发环境,生产环境保持 2–60 秒)

PHP 8.1+ 才能用 JIT,且需手动开启

JIT 不是开个开关就提速的魔法,它对 CPU 更敏感、内存占用略高,对 Laravel 这类 I/O 密集型应用收益有限——实测多数场景提升不到 5%,但配置错误反而导致 500 错误。

要在 php.ini 中同时设置:

  • opcache.jit=1255(推荐值,含函数调用、循环、返回等常见优化)
  • opcache.jit_buffer_size=256M(至少 128M,太小会禁用 JIT)
  • opcache.enable=1(JIT 依赖 Opcache,必须先开)

改完必须重启 PHP-FPM 或 apache/nginx,仅 reload 不生效。

Laravel 项目中真正影响响应速度的其实是缓存配置

Opcache 解决的是 PHP 文件编译层,而 Laravel 的路由、配置、视图编译等仍可能拖慢首字节(TTFB)。别只盯着 PHP.ini。

部署后务必运行这些命令:

  • php artisan config:cache(把 config/ 合并成单文件,跳过多次读取)
  • php artisan route:cache(仅适用于没闭包路由的项目)
  • php artisan view:cache(预编译 Blade 模板)

注意:route:cache 会忽略 routes/channels.php 和动态注册的路由,本地开发时别长期开着。

Opcache 内存不足会导致“随机 500”或页面空白

默认 opcache.memory_consumption=128(MB)对中大型 Laravel 项目远远不够,尤其开了 Horizon、Telescope 或大量包时。

观察方法:

  • 访问 /opcache-status.php(需自己写个简单脚本暴露 opcache_get_status()
  • memory_usage.used_memory_human 是否接近 memory_usage.total_memory_human
  • 如果 opcache.hit_rate 低于 95%,大概率是内存溢出后频繁踢出缓存

建议值:opcache.memory_consumption=512(中小项目),1024(含 Scout、Nova、多语言包的项目)。

Opcache 和 JIT 的调试成本远高于 Laravel 自身缓存优化,上线前务必用 abhey 对比 TTFB 和吞吐量,而不是只看 phpinfo 里的“enabled”。

text=ZqhQzanResources