Laravel5 基础性能优化小技巧

转载地址:http://www.jiatengfei.com/article/19

性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能。

一、使用Laravel自带的优化命令优化

  1. 关闭应用 debug app.debug=false
  2. 路由缓存 php artisan router:cache
  3. 配置信息缓存 php artisan config:cache
  4. 类映射加载优化 php artisan optimize
  5. 自动加载优化 composer dumpautoload
  6. 使用 Laravel 缓存
  7. 根据需要只加载必要的中间件
  8. 使用即时编译器(JIT),如:HHVM、OPcache
  9. 使用 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.phpbootstrap/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)进行预加载,可以减少模块条用模型。

图片1

图片2

四、使用DB_listen进行慢sql的查询

通过DB门面的listen方法监听查询事件,比如我们在记录日志和调试的时候这会给我们确定问题提供便利,可以在服务提供者的boot方法中注册该监听器,例如我们在 AppServiceProviderboot方法中定义监听器如下:

1
2
3
4
5
6
7
8
9
\DB::listen( function($query) {
$sql = $query->sql;
$bindings = $query->bindings;
$time = $query->time;

if( $time > 110 ){
\Log::debug(var_export(compact('sql','bindings','time'),true));
}
});

图片3

这样我们可以在 storage/logs/laravel.log 查看记录的慢查询日志了,然后针对慢查询做相应的优化即可。

坚持原创技术分享,您的支持将鼓励我继续创作!