为何安装blade-simple-icons包后Laravel启动耗时增加3秒?
Laravel安装blade-simple-icons后加载耗时剧增问题
我安装了全新的Laravel v9.3.8应用,配置好Composer、.env文件并生成密钥,使用PHP 8.1.11,原本应用运行流畅。但安装codeat3/blade-simple-icons包后,页面加载耗时增至2-3秒,哪怕是如下简单路由:
Route::get('/x', function(){ return 'Is it still slow?' . (microtime(true) - LARAVEL_START); });
并且在服务提供者的boot方法末尾dump时,耗时仅0.2秒。该包本身体积很小,为何会导致加载耗时增加2秒?
可能的原因及解决方向
- 大量图标文件的IO扫描开销:这个包封装了Simple Icons的数千个SVG图标,虽然仓库体积小,但实际包含的图标文件数量极多。Laravel在处理blade组件时,可能会在首次请求或缓存失效时遍历这些文件、注册对应组件,大量文件IO操作会直接拉低加载速度。
- 组件注册逻辑的延迟执行:包的服务提供者可能在
boot方法执行完成后,才触发图标组件的注册逻辑(比如首次调用图标组件时才遍历文件),这部分耗时不会被你在boot末尾的dump统计到,但会体现在整个请求的总耗时里。 - OPcache未启用或配置不当:如果PHP的OPcache没有开启,每次请求都要重新解析包内的所有类文件和图标相关辅助代码,大量小文件的解析累加起来会造成明显耗时。开启OPcache后,脚本会被缓存到内存,重复请求的耗时会大幅下降。
- Laravel缓存未更新:安装新包后没有重新生成配置、视图缓存,导致框架每次都要重新扫描加载新的组件信息。执行以下命令生成缓存:
php artisan config:cache php artisan view:cache php artisan route:cache - 自动加载映射未优化:执行
composer dump-autoload -o优化Composer的自动加载映射,减少类文件的查找时间。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

