4. Laravel 配置缓存

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

介绍

本文我们将讲解 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

刷新页面,可以看到响应时间立刻降下去,效果非常明显:

配置缓存

关于配置缓存能达到性能优化的原理,我们将在下一个文章中讲解。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~