Accept-Encoding:gzip:内容被gzip压缩两次

时间:2013-04-04 14:07:16

标签: iis-7.5 gzip dotnet-httpclient

我正在使用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文件。

那么:为什么我的文件被压缩了两次?

0 个答案:

没有答案