2

我正在尝试实现 Steve Souders 讨论的关于强制 gzip 压缩的内容http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/

我有一个正在运行的模块:

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 回答