如何解決Laravel應用性能瓶頸?Server-Timing助你精準定位

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:

    bootstrap/app.php

    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 應用的性能問題而煩惱,不妨試試這款擴展包,相信它會給你帶來驚喜。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享