0

IIS を使用して静的ファイルを提供しています。静的圧縮と動的圧縮の両方を有効にするように (GUI を使用して) IIS を構成しました。

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 を使用してトラフィックを検査していますが、最初の 1 つまたは 2 つの応答が圧縮されていないことがわかります。IIS がバックグラウンドでファイルを圧縮し、どこかにキャッシュしていると思います。ディスクに書き込まれるファイルは約 14MB (予想) です。

後のリクエストは圧縮されます。応答にヘッダーが表示Content-Encoding: gzipされ、ダウンロードされるファイルは約 360KB です。gzipCygwin のfileコマンドで識別されるファイルです。

ただし、gzip -d解凍に使用すると、660KB のファイルになり、それ自体が gzip で圧縮されたファイルであり、file.

そのファイルを解凍すると、期待していた 14 MB のファイルが返されます。

では、ファイルが 2 回圧縮されるのはなぜですか?

4

0 に答える 0