По поводу httpcompression asp.net - PullRequest
       3

По поводу httpcompression asp.net

0 голосов
/ 03 декабря 2011

Я видел, что люди просто обнаруживают, что запрашивающий браузер поддерживает http-сжатие или нет.если поддержка, то обнаружите поддержку gzip или deflate.

, а затем просто добавьте атрибут к объекту ответа, например

HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");

или

HttpContext.Current.Response.AppendHeader("Content-encoding", "deflate");

Мне просто нужно знать, кто на самом делеоцените ответ.это веб-сервер или asp.net рабочий процесс.расскажите подробнее, кто и как сжимает ответ.спасибо

1 Ответ

1 голос
/ 04 декабря 2011

На самом деле заголовок, который вы здесь показываете, не выполняет сжатие.Что делает сжатие - это потоковый класс, который вы устанавливаете в Response.Filter, и это сжатие выполняется 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");
    }       

Если вы сделали это, то сжатие выполняется asp.net иНЕ IIS.Затем iis обнаруживает, что файл готов к сжатию и снова не сжат.Иногда я вижу, что это обнаружение не удается, и страница вообще не отображается, поэтому в этом случае вы деактивируете сжатие iis.

Вот класс gZipStream, который находится внутри asp.net http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

Таким образом, рабочий процесс asp.net произвел сжатие, если вы установили GZipStream, DeflateStream

Вот пример сжатия файла asp.net с использованием GZipStream http://www.dotnetperls.com/gzipstream

Я предпочитаю делать сжатие на asp.net, а не на iis, потому что у меня больше контроля над ним.

...