tomkeyte/laravel-http2-push

为Laravel应用程序提供HTTP2 Push的缓存感知提供商

1.1.0 2021-02-08 19:13 UTC

This package is auto-updated.

Last update: 2024-09-09 02:54:24 UTC


README

一个针对Laravel框架的缓存感知HTTP2服务器推送实现

要全面了解HTTP2 Push的影响,请查看这篇文章,由Merj Ltd提供

Latest Version on Packagist Total Downloads

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

nginxapache的说明。

用法

检查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)。请参阅许可证文件以获取更多信息。