justbetter / laravel-http3earlyhints
Laravel 的 HTTP3 Early Hints 中间件
Requires
- php: ^8.0
- fig/link-util: ^1.2
- laravel/framework: ^10.0|^11.0
- psr/link: ^1.1.1 || ^2.0.1
- symfony/css-selector: ^6.0|^7.0
- symfony/dom-crawler: ^6.0|^7.0
Requires (Dev)
- larastan/larastan: ^2.5
- laravel/pint: ^1.7
- orchestra/testbench: ^8.0|^9.0
- phpstan/phpstan-mockery: ^1.1
- phpunit/phpunit: ^10.1
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 加载的 link
、script
或 img
标签。这些资源将在将响应发送到客户端之前添加到 Link
头部。很简单!
注意: 要推送图片资源,它必须具有以下扩展名之一: bmp
、gif
、jpg
、jpeg
、png
、tiff
或 svg
,并且不得有 loading="lazy"
。
高级用法
如果自动检测不足以满足您的需求,您可以监听 GenerateEarlyHints 事件,并手动添加新的链接。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 以获取详细信息。
许可
MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。