不同的是:accept-encoding是什么意思?

谷歌的网页速度插件告诉我:

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必须Vary: Accept-Encoding

它允许caching根据浏览器是否请求GZIP编码来提供页面的不同caching版本。 如果指示的标题中有任何变化,则变化标题指示caching存储不同版本的页面。

就目前而言,caching中将有一个(可能是压缩的)页面副本。 说这是压缩版本:如果有人请求资源,但不支持gzip编码,他们将被送达错误的内容。

Vary:Accept-Encoding通知服务器关于caching请求资源表示的行为。 如果接收到一个先前caching的资源的新请求,它将从caching中提供,除非新请求的Accept-Encoding标头与以前的caching表示不同,此时该请求将被视为一个新的请求,将不会从caching中提供。

**编辑**正如指出,如果你是从caching服务的压缩文件和客户端不接受你的压缩机制,他们会得到一个垃圾的页面,所以是的,这是必要的。 虽然你不一定会注意到通过正常testing的区别。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44和http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3