0

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

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

4

0 回答 0