souhail/laravel-http2-push2

一个用于Laravel应用程序内部HTTP2推送的缓存感知提供程序

1.2 2022-04-07 17:36 UTC

This package is auto-updated.

Last update: 2024-09-07 22:54:05 UTC


README

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

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

Latest Version on Packagist Total Downloads

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推送

关于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)。有关更多信息,请参阅许可证文件