4. Laravel 配置缓存
介绍
本文我们将讲解 Laravel 自带的 配置缓存 功能,模拟大量配置文件的情况下,配置缓存优化的效果。最后我们会讲解其原理。
我们先来看下一般情况下的响应时间:
留意以下标注的两个时间,尤其是 Booting (125.9ms)
那,这是框架的启动时间:
注意:因系统和硬件的不一致,你的结果跟我的不一致是很正常的。可以多刷新几次,尝试找一个平均值,这里我们刷新几次差不多都是 220ms 的响应时间:
Laravel 配置缓存使用以下命令生成,请在虚拟机的项目根目录下,执行以下命令:
$ php artisan config:cache
注意:如果你的配置信息里存在闭包,执行以上命令时将会报错:
Your configuration files are not serializable
。解决办法是改写闭包函数为一般的函数,或者改写为类方法。
再次刷新页面,查看响应时间,可以看到优化幅度不是很大:
那是因为目前我们项目比较小,配置信息比较少,只有十来个。为了更加直观的看到优化结果,接下来我们创建 200 个配置信息,请使用以下命令创建:
$ for i in $(seq -f "app%03g.php" 1 200); do cp ./config/app.php ./config/$i; done
可以看到生成了一大堆配置文件:
接下来刷新页面,可以看到基本上没有太大变化:
这是因为前面我们执行了 config:cache
命令,已经缓存了文件。此时当我们刷新页面时使用的正是我们之前缓存的文件:
Laravel 的配置加载机制是:会判断是否存在 bootstrap/cache/config.php
缓存文件,存在即加载,否则逐个加载 config
文件夹里的文件。
我们使用以下命令来清除缓存:
$ php artisan config:clear
运行成功后,我们可以看到 bootstrap/cache/config.php
缓存文件已被删除。
接下来重新刷新页面:
可以看到响应时间慢了几十毫秒,我们再次缓存配置信息试试:
$ php artisan config:cache
刷新页面,可以看到响应时间立刻降下去,效果非常明显:
关于配置缓存能达到性能优化的原理,我们将在下一个文章中讲解。