1

我正在使用类似于Rick Strahls 示例的技术,但使用谷歌的速度追踪器注意到

资源缓存:@10.88s - 以下资源指定了一个“Vary”标头,该标头在大多数 Internet Explorer 版本中禁用缓存。修复或删除以下资源的“Vary”标头:...

问题是 Internet Explorer 的哪些版本?如果我包含一种只为除早期版本的 Internet Explorer 之外的所有浏览器输出 Vary 的方法,这会得到解决吗?

If AllowsCacheingOnVaryHeader() Then
  Response.AppendHeader("Vary", "Content-Encoding")
  Response.AppendHeader("Vary", "Accept-Encoding")
End If

在函数“AllowsCacheingOnVaryHeader()”中——我到底应该检查什么?7、8 或 9 之前的所有 IE 版本?

4

1 回答 1

3

有关这方面的背景信息,请参见EricLaw

Response.AppendHeader("Vary", "Accept-Encoding")

应该可以。最新的 IE6 应该忽略Vary: Accept-Encoding. 我相信旧的 IE6 SP 没有。

Response.AppendHeader("Vary", "Content-Encoding")

我不确定那是为了什么。Content-Encoding响应标头不是(通常)请求标头,那么您如何Vary处理它?它肯定会绊倒 IE,你可以简单地删除它并完成它吗?

回答这个问题:不,IE7 仍然和 IE6 re 一样坏Vary,因为它使用相同的底层 wininet 代码。我还没有尝试过,但我希望 IE8 是一样的。提供 ETag 时, IE7的表现确实不那么糟糕(它重新验证资源而不是完全重新获取它),但基本错误没有改变。

于 2009-12-10T15:37:15.707 回答