fetzi/server-timing

server-timing是一个包含用于将Server-Timing信息添加到响应中的中间件的包

1.0.0 2019-12-06 14:03 UTC

This package is auto-updated.

Last update: 2024-09-22 02:08:45 UTC


README

Packagist Github Actions StyleCI Maintainability

server-timing是一个PHP中间件包,它可以将Server-Timing头添加到您的响应中。这些信息可以在您的网页浏览器中查看,例如在Google Chrome中。

有关ServerTiming响应头的更多信息,可以在MDN文档中找到。

该包自动添加两个默认度量标准,但您也可以添加自定义度量标准。

安装

composer require fetzi/server-timing

设置

该包自动在中间件实现中测量两个计时值

  1. Bootstrap:应用程序引导阶段所花费的时间
  2. Request:请求处理程序(s)处理请求所需的总时间

为了确保所有计时尽可能精确,需要在请求处理程序堆栈的最外层(最后一个)位置添加中间件。

PSR-15 中间件

要启用中间件,只需将Fetzi\ServerTiming\ServerTimingMiddleware实例添加到您的中间件堆栈中即可。

Slim应用程序中,您可以通过将以下内容添加到中间件堆栈代码中来实现:

$app->add(new ServerTimingMiddleware($container->get(ServerTimings::class)));

到您的中间件堆栈代码。

Laravel 中间件

要在您的Laravel应用程序中启用中间件,您需要使用Fetzi\ServerTiming\Laravel\ServerTimingMiddleware类。

如果您想一般性地启用中间件,只需将类定义添加到Kernel类中的$middleware数组中。如果您只想在满足条件时启用中间件,则需要覆盖Kernel中的handle方法,如此处所示。

用法

要能够添加您自己的自定义服务器计时,您需要确保将ServerTimings类注册为单例到您的依赖注入容器中。这允许您将ServerTimings类注入到任何其他类中,并创建和测量自定义服务器计时。

function fetchUsers()
{
    $fetchUsers = $this->serverTimings->create('fetchUsers');
    $fetchUsers->start();
    $users = $this->db->getUsers();
    $fetchUsers->stop();

    return $users;
}

此代码将生成一个名为fetchUsers的新服务器计时,并通过调用startstop方法来测量执行时间。

创建ServerTiming实例

ServerTimings类提供了一个create方法来创建一个自动注册并会被中间件发送回的ServerTiming实例。

// create a ServerTiming with a name
$serverTiming = $serverTimings->create('foo');

// create a ServerTiming with a name and a description
$serverTiming = $serverTimings->create('foo', 'bar');

测量ServerTiming

ServerTiming实例提供了两个用于开始和停止测量的方法。

// normal usage
$serverTiming->start();
// ...
$serverTiming->stop();

// set a manual start value (a microtime value as float)
$serverTiming->start(1000000.00);
// ...
$serverTiming->stop();

中间件将确保收集所有测量的ServerTiming实例,并将它们的值附加到Server-Timing响应头中。

许可证

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