justbetter/laravel-http3earlyhints

Laravel 的 HTTP3 Early Hints 中间件

1.1.0 2024-09-11 08:23 UTC

This package is auto-updated.

Last update: 2024-09-11 08:24:15 UTC


README

Early Hints 是一个 HTTP/3 概念,允许服务器在准备响应的同时发送 preconnect 和 preload 头部。这允许浏览器在服务器完成构建和发送响应之前开始加载这些资源 查看

此包旨在为添加 Early Hints 到您的响应提供最简单的体验。只需将您的请求通过 AddHttp3EarlyHints 中间件路由即可,它会自动创建并附加必要的 Link 头部,以实现您的 CSS、JS 和图片资源的 Early Hints。

安装

您可以通过 composer 安装此包

$ composer require justbetter/laravel-http3earlyhints

接下来,您必须将 \JustBetter\Http3EarlyHints\Middleware\AddHttp3EarlyHints 中间件添加到内核中。建议将其添加到 web 组,因为 API 没有要推送的资源。

// app/Http/Kernel.php

...
protected $middlewareGroups = [
    'web' => [
        ...
        \JustBetter\Http3EarlyHints\Middleware\AddHttp3EarlyHints::class,
        ...
    ],
    ...
];

发布配置

php artisan vendor:publish --provider="JustBetter\Http3EarlyHints\ServiceProvider"

注意: send_103 默认为 false,这是因为它尚未得到广泛支持。目前只有 FrankenPHP 支持原生的 Early Hints。默认行为是在 200 响应中添加链接头部,例如 Cloudflare 会将其转换为 early hints

用法

当您通过 AddHttp3EarlyHints 中间件路由请求时,响应将扫描任何可以受益于使用 Early Hints 加载的 linkscriptimg 标签。这些资源将在将响应发送到客户端之前添加到 Link 头部。很简单!

注意: 要推送图片资源,它必须具有以下扩展名之一: bmpgifjpgjpegpngtiffsvg,并且不得有 loading="lazy"

高级用法

如果自动检测不足以满足您的需求,您可以监听 GenerateEarlyHints 事件,并手动添加新的链接。

测试

$ composer test

贡献

请参阅 CONTRIBUTING 以获取详细信息。

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。