HTTP/2 服务器推送资源下载两次
HTTP/2 server pushed asset downloading twice
我正在尝试使用 HTTP/2 服务器推送,由 Cloudflare 提供支持。我正在尝试使用以下 HTTP Header...
推送两个资产
Link: </img/whysoslow-hero.jpg>; rel=preload; as=image, </lib/bootstrap.min.css>; rel=preload; as=style
该图像作为样式表中的背景图像被引用并且被推送然后正确使用(下载一次)。
但是,我在我的页面 HTML 中引用样式表是这样的...
<link rel="stylesheet" href="/lib/bootstrap.min.css">
...它被推送但随后也被提取(下载两次)。
我的网站是... https://whysoslow.co.uk
这是 Chrome 中“网络”选项卡的屏幕截图,显示已推送资产,但随后再次下载样式表...
任何人都可以向我解释为什么会发生这种情况以及我该如何解决它吗?
编辑:
我注意到控制台在说...
A preload for 'https://whysoslow.co.uk/lib/bootstrap.min.css' is found, but is not used due to an integrity mismatch.
所以是 SRI 检查失败了。但我不明白为什么,它正在获取相同的文件,所以它应该是相同的。为什么它们不一样?
既然我已经弄明白了,我也找到了答案...
简答:您不能预加载和使用 SRI,目前尚不支持它。
我正在尝试使用 HTTP/2 服务器推送,由 Cloudflare 提供支持。我正在尝试使用以下 HTTP Header...
推送两个资产Link: </img/whysoslow-hero.jpg>; rel=preload; as=image, </lib/bootstrap.min.css>; rel=preload; as=style
该图像作为样式表中的背景图像被引用并且被推送然后正确使用(下载一次)。
但是,我在我的页面 HTML 中引用样式表是这样的...
<link rel="stylesheet" href="/lib/bootstrap.min.css">
...它被推送但随后也被提取(下载两次)。
我的网站是... https://whysoslow.co.uk
这是 Chrome 中“网络”选项卡的屏幕截图,显示已推送资产,但随后再次下载样式表...
任何人都可以向我解释为什么会发生这种情况以及我该如何解决它吗?
编辑:
我注意到控制台在说...
A preload for 'https://whysoslow.co.uk/lib/bootstrap.min.css' is found, but is not used due to an integrity mismatch.
所以是 SRI 检查失败了。但我不明白为什么,它正在获取相同的文件,所以它应该是相同的。为什么它们不一样?
既然我已经弄明白了,我也找到了答案...
简答:您不能预加载和使用 SRI,目前尚不支持它。