不同的是: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的区别。