実際、ここに表示されているヘッダーは圧縮されていません。圧縮を行うのは、Response.Filterで設定したStreamクラスであり、この圧縮はAsp.Netによって次のように行われます。
if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// deflate
app.Response.Filter = new DeflateStream(prevUncompressedStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
これを行った場合、圧縮はIISではなくasp.netによって行われます。次に、iisは、ファイルがすべて圧縮可能であり、再度圧縮されていないことを検出します。この検出が失敗し、ページがまったく表示されない場合があるため、この場合はiis圧縮を無効にします。
これは、asp.nethttp://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx内にあるgZipStreamクラスです
。
したがって、asp.netの作業プロセスにより、GZipStreamを設定した場合、DeflateStreamの圧縮が行われました。
これは、GZipStreamhttp ://www.dotnetperls.com/gzipstreamを使用したasp.netによるファイル圧縮の例です
。
私はそれをより細かく制御できるので、iisではなくasp.netで圧縮を行うことを好みます。