beyondcode/laravel-server-timing

从您的 Laravel 应用中添加 Server-Timing 标头信息。

1.5.0 2024-03-18 13:08 UTC

This package is auto-updated.

Last update: 2024-09-18 14:10:37 UTC


README

Latest Version on Packagist Total Downloads

从您的 Laravel 应用中添加 Server-Timing 标头信息。

安装

您可以通过 composer 安装此包

composer require beyondcode/laravel-server-timing

用法

要添加 server-timing 标头信息,您需要将 \BeyondCode\ServerTiming\Middleware\ServerTimingMiddleware::class, 中间件添加到您的 HTTP Kernel 中。为了获得最准确的结果,请将中间件作为第一个加载到中间件堆栈中。

Laravel 11

bootstrap/app.php

return Application::configure(basePath: dirname(__DIR__))
    // ...
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->prepend(\BeyondCode\ServerTiming\Middleware\ServerTimingMiddleware::class);
    })
    // ...
    ->create();

Laravel 10 及以下

app/Http/Kernel.php

class Kernel extends HttpKernel
{
    protected $middleware = [
        \BeyondCode\ServerTiming\Middleware\ServerTimingMiddleware::class,
        // ...
    ];

默认情况下,中间件仅测量三件事,以保持尽可能轻量

  • 引导 (中间件被调用之前的时间)
  • 应用程序时间 (在应用程序内获取响应的时间)
  • 总计 (发送响应之前的时间)

安装包成功安装后,您可以在浏览器开发工具中查看您的计时信息。以下是一个来自 Chrome 的示例

CleanShot 2024-03-18 at 13 48 53@2x

添加额外的测量

如果您想提供额外的测量,可以使用 start 和 stop 方法。如果您没有显式停止测量的事件,一旦中间件收到您的响应,事件将自动停止。如果您想测量 Blade 视图编译所需的时间,这很有用。

use BeyondCode\ServerTiming\Facades\ServerTiming;

ServerTiming::start('Running expensive task');

// Take a nap
sleep(5);

ServerTiming::stop('Running expensive task');

CleanShot 2024-03-18 at 13 51 56@2x

如果您已知要设置的精确时间,可以使用 setDuration 方法。持续时间应以毫秒为单位设置

ServerTiming::setDuration('Running expensive task', 1200);

除了提供毫秒作为持续时间外,您还可以传递一个将被测量的可调用对象

ServerTiming::setDuration('Running expensive task', function() {
    sleep(5);
});

添加文本信息

您还可以使用 Server-Timing 中间件仅设置文本信息而不提供持续时间。

ServerTiming::addMetric('User: '.$user->id);

发布配置文件

可以使用以下命令发布配置文件: php artisan vendor:publish --tag=server-timing-config

您可以通过将 timing.enabled 配置更改为 false 或在 .env 文件中添加 SERVER_TIMING_ENABLED=false 来禁用中间件。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件 marcel@beyondco.de 报告,而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件