性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能。
接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论
1、配置缓存信息
使用laravel自带的artisan命令,将所有config里面的配置都缓存到一个文件里。
php artisan config:cache
所有缓存信息会被 bootstrap/cache/config.php 文件里,也可以用以下命令来删除该缓存信息:
php artisan config:clear
当配置信息修改的时候,一般直接执行 php artisan config:cache 即可,因为它会自动先执行 php artisan config:clear ,然后再执行 php artisan config:cache 。
2、路由信息缓存
当路由越来越多的时候,特别是在大型项目中,路由缓存的效果很明显。
php artisan route:cache
所有路由会被缓存到 bootstrap/cache/routes.php 文件里,如果要使用路由缓存,那么所有的路由就不能使用闭包即匿名函数的形式了。同样可以用
php artisan route:clear
清除路由缓存。
3、类映射加载优化
optimize 命令把一些常用的类缓存到文件里,通过减少文件的加载,提升性能:
php artisan optimize --force
会生成 bootstrap/cache/packages.php 和 bootstrap/cache/services.php 两个文件。
在 production 环境中,参数 --force 不需要指定,文件就会自动生成。
要清除类映射加载优化,请运行以下命令:
php artisan clear-compiled
此命令会删除上面 optimize 生成的两个文件。
注意:此命令要运行在 php artisan config:cache 后,因为 optimize 命令是根据配置信息(如:config/app.php
文件的 providers
数组)来生成文件的。
4、使用redis/memcached来储存session会话
每一个laravel请求都会产生session会话信息,默认使用file存储的方式,存在 storage/framework/sessions 文件里,可以再 config/session.php 里修改储存方式。
'driver' => 'redis',
5、使用专业的缓存驱动器
「缓存」是提高应用程序运行效率的法宝之一,默认缓存驱动是 file
文件缓存,建议切换到专业的缓存系统,如 Redis 或者 Memcached,不建议使用数据库缓存。
可以再配置文件 config/cache.php 里修改:
'default' => 'reids',
6、开启opcache
首先输入命令 php -m 查看有没有开启 OPcache 拓展。
如果已经开启,那么就可以开始配置php.ini。
// 开启opcache opcache.enable=1 // 是否开启代码检测,开发环境中应不开启,然后可以写一个artisan命令去运行opcache_reset()方法去重启opcache缓存 opcache.validate_timestamps=0 // 如果开启代码检测,每隔多久检测一个代码是否改变 opcache.revalidate_freq=0 // 最大加速文件数,linux下可以通过find . -type f -print | grep php | wc -l命令查看项目有的文件数,该值应该大于项目下的文件数 opcache.max_accelerated_files=8000 // opcache预先申请的内存,用来存opcache缓存 opcache.memory_consumption=192 // 重启字符串缓冲区 opcache.interned_strings_buffer=16 // 这实际上是提供了一个更快的机制,在单个请求结束时调用代码中的解构器,以加快响应和回收php工作,以便更快地为下一个传入请求做好准备。 opcache.fast_shutdown=1