我正在使用 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 文件。
那么:为什么我的文件被压缩了两次?