我正在阅读很多关于 http2 的服务器推送的信息。还做了一些实验(在初学者的水平上)......
好吧,我的问题是:服务器推送 woff2 网络字体有意义吗?(因为不是每个浏览器都使用它们),并且,有没有办法推送正确的字体(如果还没有在缓存中)?
Zach 指出拥有快速的字体交付解决方案是多么重要,而 CSS-Tricks (Chris Coyer) 有一个很好的方法来完成缓存感知......
谢谢!大卫
我正在阅读很多关于 http2 的服务器推送的信息。还做了一些实验(在初学者的水平上)......
好吧,我的问题是:服务器推送 woff2 网络字体有意义吗?(因为不是每个浏览器都使用它们),并且,有没有办法推送正确的字体(如果还没有在缓存中)?
Zach 指出拥有快速的字体交付解决方案是多么重要,而 CSS-Tricks (Chris Coyer) 有一个很好的方法来完成缓存感知......
谢谢!大卫
好吧,这是一个有趣的问题。答案是:不,你不应该这样做。但原因和你想象的有点不同……
由于有点神秘的原因,总是在没有凭据的情况下请求字体(基本上是 cookie)。对于大多数浏览器(Edge 除外),这意味着浏览器会为该请求打开另一个连接,这很重要,因为 HTTP/2 推送链接到该连接。因此,如果您在一个连接上推送资源,并且浏览器从另一个连接获取资源,它将不会使用该推送资源(您不会像您想象的那样直接推送到 HTTP 缓存中)。
Jake Archibald 在他出色的HTTP/2 推送比我想象的文章中讨论了这一点以及许多其他 HTTP/2 推送技巧和边缘案例。
但它确实提出了一个问题,即即使这不是问题,或者如果您想发送不同的图像格式(例如,这将在同一个连接上),您如何决定要推送什么格式。除了查看 User-Agent 并以此为基础进行猜测之外,现在您还可以了解浏览器支持的内容。
目前提出了一个新的HTTP 客户端提示标头,旨在允许浏览器指示设备细节。这目前更关注图像大小和密度,但理论上也可以包括支持的文件格式。