Chromium @font-face 缓存行为 (FOIT)

Chromium @font-face caching behavior (FOIT)

我注意到某些网站上基于 Chromium 的浏览器(Google Chrome 和 Opera)中出现了不可见文本 (FOIT),即使网络字体文件已经缓存(在第一次加载后的同一站点)。

更深入的观察表明这与缓存行为有关。 FOIT 仅在文件从 disk cache 加载时发生。当文件从 memory cache 提供时(使用内置的网络检查器工具),一切看起来都很稳定。

我们如何影响网络字体放置在哪个缓存中?

基于 Chromium 的浏览器似乎将 gzip 压缩内容加载到 disk cache。至少这就是为什么使用过的 .woff2 文件没有加载到 memory cache.

的原因

只要 woff/woff2 个文件已经压缩,就不需要进一步压缩 (http://www.phpied.com/font-face-gzipping-take-ii/)。当我禁用这些文件的压缩时,定制的 FOIT 消失了(某些 Web 服务器默认为所有文件启用压缩)。

当使用 Apache 作为 Web 服务器时,可以使用以下代码行进行存档:

SetEnvIfNoCase Request_URI \.(?:woff|woff2)$ no-gzip