在 laravel 應用開發過程中,性能問題常常困擾著開發者。響應時間過長,頁面加載緩慢,這些都會嚴重影響用戶體驗。然而,傳統的性能分析方法往往效率低下,難以快速定位問題所在。幸運的是,beyondcode/laravel-server-timing 擴展包為我們提供了一個強大的解決方案,它可以幫助我們輕松地在瀏覽器開發者工具中添加 Server-Timing 頭部信息,從而精準地分析應用性能,找出瓶頸所在。 composer在線學習地址:學習地址beyondcode/laravel-server-timing 擴展包通過在 http 響應中添加 Server-Timing 頭部信息,將服務器端的性能指標暴露給瀏覽器開發者工具。這樣,開發者可以直接在瀏覽器中查看各個階段的耗時,例如:
- bootstrap: Laravel 應用啟動所花費的時間。
- Application: 應用處理請求并生成響應所花費的時間。
- Total: 整個請求處理過程的總耗時。
除了以上默認的指標外,你還可以自定義更多的性能指標,例如數據庫查詢時間、視圖渲染時間等等,從而更全面地了解應用的性能狀況。
安裝
使用 Composer 安裝非常簡單:
composer require beyondcode/laravel-server-timing
配置
安裝完成后,你需要將 BeyondCodeServerTimingMiddlewareServerTimingMiddleware::class 中間件添加到你的 HTTP Kernel 中。為了獲得最準確的結果,建議將其添加到中間件棧的最前面。
-
Laravel 11:
return Application::configure(basePath: dirname(__DIR__)) // ... ->withMiddleware(function (Middleware $middleware) { $middleware->prepend(BeyondCodeServerTimingMiddlewareServerTimingMiddleware::class); }) // ... ->create();
-
Laravel 10 及以下版本:
app/Http/Kernel.php
class Kernel extends HttpKernel { protected $middleware = [ BeyondCodeServerTimingMiddlewareServerTimingMiddleware::class, // ... ]; }
使用
安裝并配置完成后,你就可以在瀏覽器開發者工具的 “Network” 面板中看到 Server-Timing 頭部信息了。
添加自定義指標
你可以使用 ServerTiming::start() 和 ServerTiming::stop() 方法來添加自定義的性能指標:
use BeyondCodeServerTimingFacadesServerTiming; ServerTiming::start('Database Query'); // 執行數據庫查詢 DB::table('users')->get(); ServerTiming::stop('Database Query');
如果你已經知道某個操作的耗時,可以使用 ServerTiming::setDuration() 方法:
ServerTiming::setDuration('Cache Retrieval', 200); // 耗時 200 毫秒
你還可以傳遞一個閉包給 ServerTiming::setDuration() 方法,它會自動測量閉包的執行時間:
ServerTiming::setDuration('Image Processing', function() { // 執行圖像處理操作 sleep(1); // 模擬耗時操作 });
添加文本信息
除了性能指標外,你還可以使用 ServerTiming::addMetric() 方法添加文本信息,例如用戶信息、請求參數等等:
ServerTiming::addMetric('User ID: ' . Auth::id());
優勢和實際應用效果
- 精準定位性能瓶頸: 通過 Server-Timing 頭部信息,你可以清晰地了解應用各個階段的耗時,從而快速定位性能瓶頸。
- 簡化性能分析流程: 無需復雜的性能分析工具,直接在瀏覽器開發者工具中即可查看性能數據,簡化了性能分析流程。
- 實時監控應用性能: 可以在開發和生產環境中實時監控應用性能,及時發現并解決潛在的性能問題。
- 提高開發效率: 快速定位性能瓶頸,可以減少調試時間,提高開發效率。
beyondcode/laravel-server-timing 是一款非常實用的 Laravel 擴展包,它可以幫助你輕松地分析應用性能,找出瓶頸所在,從而優化你的 Laravel 應用,提升用戶體驗。如果你正在為 Laravel 應用的性能問題而煩惱,不妨試試這款擴展包,相信它會給你帶來驚喜。