Я пытаюсь принудительно сжать gzip на странице с помощью GZipStream, но браузер говорит, что я использую неподдерживаемое сжатие - PullRequest
2 голосов
/ 05 августа 2010

Я пытаюсь реализовать то, что Стив Соудерс обсуждает http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/ о принудительном сжатии gzip

У меня есть модуль, который запускает это:

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 просто проверяет заголовок «accept-encoding», пока CompressionUtils.GzipSupportedExplicitly и CompressionUtils.GzipNotSupportedExplicitly проверяют наличие cookie, говоря, действительно ли браузер может читать gzip

Но когда я загружаю страницу в Firefox, я получаю эту ошибку:

Ошибка кодирования содержимого

Невозможно отобразить страницу, которую вы пытаетесь просмотреть, поскольку она использует недопустимый или неподдерживаемая форма сжатия.

и в Fiddler он показывает, что заголовок кодирования контента был добавлен, но контент не был сжат

1 Ответ

1 голос
/ 11 августа 2010

Получается, что я просто слишком поздно связывался, привязанный к PostMapRequestHandler вместо PreSendRequestHeaders. Работает нормально сейчас.

...