google页面加速插件告诉我:
The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header:
//some .js and .css files我不明白这是什么意思。我已经像这样压缩了这些文件:
if (encodings.Contains("gzip") || encodings == "*")
{
app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}这一切似乎都奏效了。为什么有必要使用Vary: Accept-Encoding?
发布于 2011-10-21 19:42:32
它允许缓存根据浏览器是否请求GZIP编码来提供页面的不同缓存版本。如果在所指示的标头中存在任何变化,则variation标头指示高速缓存存储页面的不同版本。
目前的情况是,缓存中将有页面的一个(可能是压缩的)副本。假设它是压缩版本:如果有人请求资源但不支持gzip编码,他们将得到错误的内容。
发布于 2011-10-21 19:42:00
Vary: Accept-Encoding通知服务器关于缓存所请求资源的表示的行为。如果接收到对先前缓存的资源的新请求,则将从缓存中提供该请求,除非新请求的Accept-Encoding报头与先前缓存的表示形式不同,此时该请求将被视为新请求,并且不会从缓存中提供服务。
**编辑**正如spender指出的那样--如果你从缓存中提供一个压缩文件,而客户端不接受你的压缩机制,他们会得到一个垃圾页面,所以这是必要的。不过,通过常规测试,您不一定会注意到其中的差异。
请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44和http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3
https://stackoverflow.com/questions/7848796
复制相似问题