google page speed addon告诉我:
The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header:
//some .js and .css files
Run Code Online (Sandbox Code Playgroud)
我不明白这意味着什么.我已经像这样压缩了这些文件:
if (encodings.Contains("gzip") || encodings == "*")
{
app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有效.为什么有Vary: Accept-Encoding必要?
我刚刚在Chrome上尝试访问某些页面时发现了一种非常奇怪的行为.它会提示将它们下载为.gz文件而不是加载它们.
这仅适用于当前的Chrome和所有平台.
正确加载页面后,我可以在Inspector上看到这一点
Resource interpreted as Document but transferred with MIME type application/x-gzip:" https://confluence.example.com/display/engp/PR-1221 ".
我知道这些是由配置为使用gzip压缩的nginx服务器提供的,但这没有任何问题.
gzip on; # that's on nginx part
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定这是nginx配置有问题,但是什么?
是什么让这个问题更加有趣(而且很烦人)是,如果您从超链接复制URL并将其粘贴到浏览器,它将只是正确地打开页面.是的,这只发生在超链接上.
我试图在此找到有关chrome的错误报告,但我唯一能找到的是其他人确实报告了与reddit页面或类似问题相似的问题github.com.
Request URL:https://confluence.example.com/display/engp/PR-1221
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:UTF-8,*;q=0.5
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
DNT:1
Host:example.com
Referer:https://example.com/browse/PR-1221
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Run Code Online (Sandbox Code Playgroud)
Response Headersview source Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type Access-Control-Allow-Methods:GET, POST, OPTIONS, HEAD Access-Control-Allow-Origin:* Baz:bah Cache-Control:no-cache, must-revalidate Connection:keep-alive Content-Encoding:gzip Content-Type:text/html;charset=UTF-8 Date:Mon, 04 …