【问题标题】:HTTP2 push regex/wildcardHTTP2 推送正则表达式/通配符
【发布时间】:2021-10-06 16:01:37
【问题描述】:

是否可以使用通配符使用 http2 推送文件,例如:

header("Link: </wp-content/java-*.js>; rel=preload; as=script", false);

在哪里 java-1.js。 java-2.js 等会使用 http2 协议预加载吗? 或者可能所有 .js 在一个文件夹中,例如:

header("Link: </wp-content/cache/wpo-minify/*.js>; as=script; rel=preload", false); //3k

显然,上述方法行不通。

【问题讨论】:

    标签: php regex push wildcard http2


    【解决方案1】:

    推送资产的链接头方法不是HTTP/2标准的一部分,只是一种常用的表示推送的方法。你没有说你使用的是哪个网络服务器,但我不知道有任何网络服务器允许通配符。

    所以你需要自己做这件事,在你的 PHP 文件中查找文件,然后为每个文件添加一个链接头。

    但是,如果真的建议您在执行此操作之前仔细考虑一下。 HTTP/2 Push 有点令人失望,很少被证明可以带来改进,而且很容易被过度使用。你真的应该only push the bare minimum 因为推送不是免费的,通过使用它,你正在用可能不是最重要的资源填充网络。浏览器在以紧凑的顺序请求资源方面非常聪明,并且推送只是推送所有内容。使用通配符似乎与此相反。

    Push 也会忽略浏览器是否已经在其缓存中拥有该文件并再次发送它。有一些方法可以解决这个问题(例如使用 cookie),但它们需要一些思考和设置,此时您可以动态设置标头,因此可以如上所述自行实现通配符逻辑。

    Chrome have indicated their intention to remove HTTP/2 push supportnever implemented it for HTTP/3

    因此很难推荐 HTTP/2 Push,尤其是在使用通配符推送多个资源时,例如您要求做的事情。

    【讨论】:

    • 谢谢。我不知道无论浏览器的缓存如何,推送都会一遍又一遍地发送文件。看起来我必须找到一个 cookie 解决方案,只在第一次访问时推送,或者类似的东西。
    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 2014-06-03
    • 2012-12-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多