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
我注意到某些网站上基于 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