我有一个单页面静态站点,我在其中配置了 appcache 以缓存加载页面所需的所有资源以供将来使用,以最大限度地减少服务器请求并使页面脱机可用。
我遇到了字体支持问题。我使用带有@font-face 和 woff、ttf、svg 和 eot 格式的网络字体,以确保与所有浏览器兼容。问题是我必须在缓存清单中包含多种字体以确保跨浏览器的兼容性。虽然通常浏览器只会读取 @font-face ,选择适当的字体格式,然后只下载该格式(或者如果它在本地可用,则根本不下载),但我无法找到一种方法来使用 appcache 来完成它,同时确保一切可缓存和离线使用。我的解决方案只是在缓存清单中包含所有字体格式。虽然这很有效,但非常浪费,因为客户下载了他们不需要的字体。
最后,我对浏览器支持做了一些研究,比较了 appcache、ttf、woff、eot 和 svg 字体。我得出的结论是,所有支持 appcache 的浏览器都可以使用 woff 或 ttf,而 svg 和 eot 的支持很少。(限制因素是 android 没有 woff 支持,IE 没有 ttf 支持)。使用它,字体仍然可以在任何地方正确显示。但是,它仍然非常低效,因为无论需要都下载了两种字体。
那么,总而言之,最有效地处理字体和 appcache 的推荐方法是什么?