本指南列出了從快速最佳化到深度調優的各種效能最佳化技巧,這些技巧可以幫助建立高效能的 Laravel 應用。
在 Enlightn 上有不少同學在幫我們寫了這篇指南。如果你正在尋求 Laravel 的自動化效能或安全工具,不妨到這個網站看看。
毫無疑問,相比加載速度慢的應用程序,用戶更喜歡速度更快的應用。
根據Google的一項研究,載入時間超過3秒的網站,在行動端會有 53% 的用戶流失(選擇離開)。而行動網站的平均載入時間約為 15 秒。這就是性能的重要性!
應用每增加一秒的載入時間,客戶轉換率就會越低。幸運的是,對於 Laravel 應用來說,這並不是一個很難解決的問題。
Laravel 內建了一些效能提升功能,簡單設定即可使用。
最關鍵的效能提升是 路由快取 。你是否知道每次啟動 Laravel 應用時,都會執行確定中間件、解析別名、解析路由組並指定路由控制器操作和處理請求參數?
可以使用Artisan 指令route:cache
來快取所有必要的路由訊息,從而跳過路由處理:
php artisan route:cache
這條指令可以帶給你5 倍的性能提升!是最簡單也是最有效的優化。
除了路由緩存,Laravel 還提供以下內容:
提示:你應該確保將上述快取命令新增到部署腳本中,以便每次部署時重新快取。否則,路由或設定檔的任何變更都不會在應用程式中體現。
Laravel 開發者常犯的一個錯誤是在生產模式下安裝所有依賴項。有些開發包(例如 Ignition)會在記憶體中記錄查詢、日誌和轉儲,從而提供帶有上下文的友善錯誤訊息,簡化偵錯過程。儘管這在開發中很有用,但會減慢生產環境中應用程式的速度。
在部署腳本中,使用Composer 安裝拓展套件的同時請務必使用-no-dev
選項:
composer install --prefer-dist --no-dev -o
此外,請確保如上所述在生產環境中使用-o
選項。這可以讓 Composer 可以透過產生「classmap」來優化自動載入器。
如果你的應用程式在運行時沒有生成類,你可以選擇使用 --classmap-authoritative
選項而不是 -o
選項進行進一步最佳化。請務必查看Autoloader 的Composer 文件優化策略.
佇列系統,這可以讓我們將耗時的任務轉移到佇列的任務中,從而讓你的應用程式能夠以極快的速度回應請求。
一般情況下,這類任務的常見範例包括解析和儲存 CSV 檔案、與第三方 API 互動、向使用者發送通知、存在較長耗時的資料庫查詢和搜尋索引更新。
壓縮標頭會對應用程式效能產生重大影響。確保你在 Web 伺服器上為文字格式檔案(如 CSS、JS、XML 或 JSON)啟用壓縮或 CDN。
圖像格式已經有壓縮演算法的實現且大多數情況圖像格式檔案已經被壓縮過,並且圖像並不是文字格式檔案(SVG格式除外,這是XML文檔)。因此,影像格式不需要壓縮。
你可以在 Web 伺服器或 CDN 上設定 gzip 或 brotli(較舊的瀏覽器可能不支援 brotli),以獲得較大的效能提升。
通常情況下,壓縮可以將檔案體積大小減少 80% 左右!
快取可以提高應用程式的效能,特別是對於靜態資源,如圖像、CSS 和JS 檔案。建議在 Web 伺服器或CDN 層級啟用快取控制標頭(如果適用的話)。如果你希望在 Larvel 應用程式而不是 WebServer上設定這些控制頭,可以使用 Larvel 的 快取控制中間件。
Cache 訊息標頭欄位可以確保瀏覽器不會在多次造訪網站時重複請求靜態資源。這可以提高用戶體驗,因為網站在隨後的訪問時可以加載更快。
Laravel Mix 提供了開箱即用的快取清理 功能,以便在更改 CSS 或 JS 程式碼時,瀏覽器不會繼續使用舊的快取內容。
內容交付網路(CDN)是一個基於地理分散式的伺服器群組,透過使用距離網站訪客更近的伺服器來提供服務。可以讓使用者體驗到更快的載入時間。
除了更快的載入速度和更短的載入時間外,CDN 還具有其他優點,如減少 Web 伺服器負載,DDOS 保護和靜態資源服務的分析等。
一些流行的 CDN 包括 CloudFlare、AWS CloudFront 和 Azure CDN。大多數 CDN 都有一定的免費試用額度。請考慮使用 CDN 來提升靜態資源的載入效能。
Laravel 在框架中提供了開箱即用的 CDN 支援元件 Mix 和助手函數 asset。
最小化腳本將會從你的應用程式中移除對執行不必要的額外程式碼(如程式碼註解、空格、縮短變數名以及其他最佳化)。這是一個在生產環境中減少 JS 和 CSS 檔案大小常用且有效的手段。
Laravel Mix 為你的生產腳本提供了開箱即用的最小化輸出 功能
Laravel 內建了快取 支援。快取最適合用於讀取繁重的工作負載。這些工作負載通常涉及耗時的資料檢索或資料處理任務。
快取的一些常見場景案例可能包括:
請記住,快取對long tail
(很少請求的項目)沒有用處。相反,對於任何頻繁進行的資料檢索 (與資料更新相比),應謹慎使用它。
也必須確保每次快取內容變更時都使快取無效或刷新快取。例如,如果您正在快取設定檔頭,則在使用者更新其設定檔圖片後刷新快取。
如果您的某些頁面載入時間較長或記憶體使用率較高,則可能需要確定效能瓶頸。 Laravel 生態系統中有許多工具可以幫助您做到這一點,包括 Laravel Telescope、Laravel Debugbar 和 Clockwork 。
一些常見的效能瓶頸包括:
如果無法使用上述偵錯工具來確定應用程式中的效能瓶頸,則可以考慮使用 XDebug 或 Blackfire 等分析工具。
另外這裡有完整的上線檢查清單可供參考41. 課程總結|《LX3 Laravel 效能優化入門》。
效能最佳化是一個永恆的話題,但Laravel 有幾個內建元件,如Mix、queues 和緩存,這使效能優化看起來很簡單!我們希望你在提高應用程式效能方面學到一些新知識。
原文網址:https://laravel-news.com/performance-checklist
翻譯網址:https://learnku.com/laravel/t/55702
【相關推薦:laravel影片教學】
以上是Laravel8如何進行效能優化?優化技巧分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!