2

gzip 圧縮の強制についてhttp://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/についてSteve Souders が議論していることを実装しようとしています。

これを実行しているモジュールがあります:

void context_PreSendRequestHeaders(object sender, EventArgs e)
{
    var app = sender as HttpApplication;

    var request = app.Request;
    var response = app.Response;

    if (CompressionUtils.GzipSupported(request) || CompressionUtils.GzipNotSupportedExplicitly(request)) 
    {
        return;
    }

    if (CompressionUtils.GzipSupportedExplicitly(request))
    {
        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        response.AddHeader(HttpHeaderKey.ContentEncoding, "gzip");
        return;
    }

    response.Write("<iframe style=\"display:none;\" src=\"/CompressedPage.aspx\"></iframe>");
}

CompressionUtils.GzipSupported「accepts-encoding」ヘッダーを CompressionUtils.GzipSupportedExplicitly確認CompressionUtils.GzipNotSupportedExplicitlyし、ブラウザが本当にgzipを読み取れるかどうかを示すCookieを確認します

しかし、Firefox でページを読み込むと、次のエラーが表示されます。

コンテンツのエンコード エラー

表示しようとしているページは、無効またはサポートされていない形式の圧縮を使用しているため、表示できません。

Fiddler では、コンテンツ エンコーディング ヘッダーが追加されているが、コンテンツが圧縮されていないことが示されています。

4

1 に答える 1

1

したがって、バインドが遅すぎて、PostMapRequestHandler代わりに にバインドされていたことがわかりましたPreSendRequestHeaders。現在正常に動作しています。

于 2010-08-10T21:51:42.763 に答える