性能一直是 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
