tomkeyte / laravel-http2-push
为Laravel应用程序提供HTTP2 Push的缓存感知提供商
1.1.0
2021-02-08 19:13 UTC
Requires
- php: >=7.3
- illuminate/support: ^6.0|7.0|8.0
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: 3.*
README
一个针对Laravel框架的缓存感知HTTP2服务器推送实现
要全面了解HTTP2 Push的影响,请查看这篇文章,由Merj Ltd提供
HTTP2 Push很复杂!此包使它变得简单,提供了一个简单的blade指令,通知客户端“嘿,我知道你只请求了一个HTML文档,但我已经知道你将需要这个样式表,所以现在就开始下载它们”。
资源在每个缓存生命周期内推送一次。
例如,假设您有一个通过Cache-Control头部设置的缓存长度为28天的样式表。包将最初推送资源,并设置一个cookie来跟踪(按资源)是否已发送,因此已缓存 - 因为没有必要推送浏览器已经缓存的资源(这就是这个包背后的动机)。
安装
通过composer安装包
composer require tomkeyte/laravel-http2-push
发布配置(推荐)
php artisan vendor:publish --provider="TomKeyte\LaravelHttp2Push\Http2PushServiceProvider"
服务器配置
重要!您的Web服务器必须启用通过Link头进行的HTTP2 Push
用法
检查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)。请参阅许可证文件以获取更多信息。