我们设置了一个 Google Cloud Storage 存储桶,旨在提供网络字体。通过使用 CORS 设置,我们可以正确地为 IE 9、webkit、firefox 提供 woff 字体;eot 为 7 和 8 等。缓存控制设置为遥远的未来。在 webkit / mozilla 浏览器中的行为与预期的一样 - 字体被请求一次并缓存在客户端计算机上。
但是,Vary: Origin标头(似乎不可修改)导致 Internet Explorer 对每个页面请求发出 If-Modified-Since 请求,从而导致 304。来自 IE 的每页重新验证意味着存在闪存每个页面的无样式内容,因此我们不得不恢复使用我们自己的服务器,在那里我们可以更好地控制标题。
我们已经在本地复制了这个。我们的测试表明,无论是否使用 Access-Control-Allow-Origin 指令,字体文件是从同一来源还是从 cdn 提供都没有区别。关键问题完全是 Vary 标头,而 Goolge 的服务器将其设置为Origin。
这种行为在 IE7、IE8 和 IE9 中很常见。它可以通过 a) 将 Vary 标头更改为Vary: Accept-Encoding或 b)完全删除Vary 标头来解决,因此一切正常。
使用当前配置,Google Cloud Storage 无法用作字体文件的 cdn,这令人沮丧。
有什么方法可以控制 Vary 标头吗?这是可以考虑的事情吗?如果没有,是否有任何 CDN 支持该功能?
谢谢。