服务器推送 woff2 有意义吗?

does it make sense to server-push woff2?

我阅读了很多有关 http2 的服务器推送的内容。还做了一些实验(初学者水平)...

好吧,我的问题是:服务器推送 woff2 网络字体是否有意义? (因为不是每个浏览器都使用它们),还有,是否有推送正确字体的方法(如果不在缓存中)?

Zach 指出拥有一个快速的字体传送解决方案是多么重要,CSS-Tricks (Chris Coyer) 有一个很好的方法来完成缓存感知...

谢谢! 大卫

好吧,这是个有趣的问题。答案是:不,你不应该这样做。但原因和你想象的有点不同......

For reasons that are a bit cryptic,总是在没有凭据(基本上是 cookie)的情况下请求字体。对于大多数浏览器(Edge 除外),这意味着浏览器会为该请求打开另一个连接,这很重要,因为 HTTP/2 推送链接到该连接。因此,如果您在一个连接上推送资源,而浏览器从另一个连接获取资源,它将不会使用该推送的资源(您不会像您想象的那样直接推送到 HTTP 缓存)。

Jake Archibald 在其出色的 HTTP/2 push is tougher than I thought 文章中讨论了这一点以及许多其他 HTTP/2 推送技巧和边缘情况。

但它确实回避了一个问题,即即使这不是问题,或者如果您想发送不同的图像格式(例如,将在同一连接上),您如何决定要推送的格式。除了查看 User-Agent 并据此进行猜测外,现在您还可以通过其他方式了解浏览器支持的内容。

目前正在提议一项新的 HTTP Client Hints header,旨在允许浏览器指示设备细节。这目前更关注图像大小和密度,但理论上也可以包括支持的文件格式。