souhail / laravel-http2-push2
一个用于Laravel应用程序内部HTTP2推送的缓存感知提供程序
1.2
2022-04-07 17:36 UTC
Requires
- php: ^8.1
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.17|^7.0
- phpunit/phpunit: ^9.3
- squizlabs/php_codesniffer: 3.*
README
一个针对Laravel框架的缓存感知HTTP2服务器推送实现
要全面了解HTTP2推送的影响,请查看这篇 文章,由 Merj Ltd 提供
HTTP2推送很难!此包使得它变得简单,提供了一个简单的blade指令,告诉客户端“嘿,我知道你只请求了一个HTML文档,但我已经知道你将需要这个样式表,所以现在就开始下载它们”。
资源在缓存生命周期内推送一次。
例如,假设你有一个通过Cache-Control头设置的缓存长度为28天的样式表。该包将最初推送资源,并设置一个cookie来跟踪(按资源)是否已发送,因此已缓存 - 因为不需要推送浏览器已经缓存的资源(这就是这个包背后的动机)。
安装
通过composer安装包
composer require tomkeyte/laravel-http2-push
发布配置(推荐)
php artisan vendor:publish --provider="TomKeyte\LaravelHttp2Push\Http2PushServiceProvider"
服务器配置
重要!必须启用你的Web服务器通过Link头进行HTTP2推送
用法
检查http2push.php配置文件以设置基于你的设置的默认过期长度。注意,包中所有过期长度均以天为单位 - -1的值表示不应设置cookie,从而导致所有请求都进行推送。
设置如下
- 使用
cookie_expires_in设置全局cookie过期限制 - 设置特定文件类型的cookie过期时间(这些将覆盖全局限制)
'cookie_expire_types' => [ 'font' => 90, 'script' => 27, 'style' => 24, 'image' => 30, ],
- 可选地,提供应推送的资源数组(*)
'always' => [ '/js/app.js', # A simple string [ 'src' => '/css/app.css', # Or an array, containing the src & expiry time 'expires' => '90', ], ],
在你的blade模板中推送资源
// use default cookie expiry lengths @h2push('/css/app.css')
// specify a cookie expiry length of 60 days, for this resource only @h2push('/js/app.js', 60)
建议你对资源进行版本控制,以便包可以跟踪是否需要重新推送它们。此包与laravel-mix配合良好
@h2push( mix('/css/app.css') )
* 每个通过Web中间件路由的GET请求
测试
composer test
使用以下命令生成代码覆盖率报告
composer test-coverage
需要适当的代码覆盖率驱动程序,如xdebug
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。