我正在使用IIS来提供静态文件。我已经配置了IIS(使用GUI)来启用静态和动态压缩。
我正在使用HttpClient
下载它,如下所示:
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
var response = client.SendAsync(request).Result;
var stream = new FileStream("foo", FileMode.Create);
response.Content.CopyToAsync(stream)
.ContinueWith(t => stream.Close())
.Wait();
我正在使用Fiddler检查流量,我可以看到前一个或两个响应未被压缩。我假设IIS正在后台压缩文件并将其缓存到某个地方。写入磁盘的文件大约是14MB(预期)。
以后的请求被压缩了。我可以在响应中看到Content-Encoding: gzip
标头,下载的文件大约是360KB。这是一个gzip
文件,由Cygwin的file
命令识别。
但是,当我使用gzip -d
对其进行解压缩时,我最终会得到一个660KB的文件,该文件本身就是一个gzip压缩文件,也由file
标识。
如果我解压缩那个文件,我会收到我期待的14MB文件。
那么:为什么我的文件被压缩了两次?