转载地址:http://www.jiatengfei.com/article/19
性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能。
一、使用Laravel自带的优化命令优化
- 关闭应用
debug app.debug=false
- 路由缓存
php artisan router:cache
- 配置信息缓存
php artisan config:cache
- 类映射加载优化
php artisan optimize
- 自动加载优化
composer dumpautoload
- 使用 Laravel 缓存
- 根据需要只加载必要的中间件
- 使用即时编译器(JIT),如:HHVM、OPcache
- 使用 PHP 7.x
关闭应用debug
打开应用根目录下的 .env
文件,把 APP_DEBUG
设置为 false
。
1 | APP_DEBUG=false |
路由缓存
路由缓存可以有效的提高路由器的注册效率,在大型应用程序中效果越加明显。
生成路由缓存:
1 | php artisan router:cache |
运行以上命令会生成 bootstrap/cache/routes.php
文件,需要注意的是,路由缓存不支持路由匿名函数编写逻辑,否则会报错。
清除路由缓存:
1 | php artisan route:clear |
此命令就是把 bootstrap/cache/routes.php
文件删除。
配置信息缓存
使用 Artisan 自带的命令,把 config 文件夹里所有配置信息合并到一个文件里,减少运行时文件的载入数量。
1 | php artisan config:cache |
上面命令会生成 bootstrap/cache/config.php
文件,可以使用以下命令清除配置信息缓存:
1 | php artisan config:clear |
注意:配置信息缓存不会随着配置信息更新而自动重载,所以,开发时候建议关闭配置信息缓存,一般在生产环境中使用。
类映射加载优化
optimize 命令把常用加载的类合并到一个文件中,通过减少文件的加载来提高运行效率。
1 | php artisan optimize |
运行上面这个命令会生成 bootstrap/cache/packages.php
和 bootstrap/cache/services.php
两个文件。
要清除类映射加载优化,请运行以下命令:
1 | php artisan clear-compiled |
提示:由于 PHP 自身的性能优化,optimize 命令已经不能给应用提供显著的性能提升,因此在新版本中optimize命令已经被彻底移除了。
自动加载优化
1 | composer dumpautoload -o |
Laravel 应用程序是使用 composer 来构建的。这个命令会把 PSR-0 和 PSR-4 转换为一个类映射表来提高类的加载速度。
注意:php artisan optimize
命令里已经做了这个操作。
二、使用debugbar进行问题定位
三、使用加载进行优化
使用(with
/load
)进行预加载,可以减少模块条用模型。
四、使用DB_listen进行慢sql的查询
通过DB门面的listen方法监听查询事件,比如我们在记录日志和调试的时候这会给我们确定问题提供便利,可以在服务提供者的boot方法中注册该监听器,例如我们在 AppServiceProvider
的 boot
方法中定义监听器如下:
1 | \DB::listen( function($query) { |
这样我们可以在 storage/logs/laravel.log
查看记录的慢查询日志了,然后针对慢查询做相应的优化即可。