HTTP2 推送 regex/wildcard

HTTP2 push regex/wildcard

是否可以使用通配符使用 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

显然,上面的方法是行不通的。

linkheader资产推送方式不属于HTTP/2标准,只是一种常用的推送方式。你没有说你使用的是哪个网络服务器,但我不知道有任何允许通配符的网络服务器。

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

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

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

Chrome have indicated their intention to remove HTTP/2 push support and never implemented it for HTTP/3.

所以很难推荐HTTP/2推送,尤其是像你要求的那样用通配符推送多个资源。