Сжатие IIS с кодом GZipping?

Я добавляю сжатие gzip ко всему моему статическому контенту и выходным html-файлам с моего сайта .net 4.

Я также включил сжатие в IIS 7.5 (как статическое, так и динамическое), и я обнаружил, что включение сжатия в IIS перезаписывает мой заголовок Vary: Accept-Encoding для этих ресурсов.

Итак, мне интересно, действительно ли нужно включать сжатие в IIS, поскольку я уже сжимаю вещи?

Итак, я провел некоторое тестирование и обнаружил следующее:

Utilizing IIS Static and Dynamic Compression, with code compression:
CPU Load: 35%
Memory Load: 28M

Utilizing IIS Static and Dynamic Compression, without code compression:
CPU Load: 34%
Memory Load: 28M

Non-Utilizing Static and Dynamic Compression In IIS, with code compression:
CPU Load: 14%
Memory Load: 32M

Итак, основываясь на моих выводах, я согласен с тем, что нет необходимости использовать сжатие IIS при выполнении этого в коде. Несмотря на то, что потребление памяти немного выше, загрузка ЦП значительно ниже, чтобы сделать сжатие в коде намного более эффективным для обслуживания файлов.

Теперь, на самом деле, вся моя цель заключалась в том, чтобы выяснить и избавиться от перезаписи IIS заголовка Vary: Accept-Encoding. Что, похоже, не влияет на то, включено сжатие IIS или нет. Заголовок по-прежнему не добавляется... так что вы можете помочь с этим?

Вот код кэширования, который я реализую. Обратите внимание, что перед запуском метода, содержащего этот код, я очищаю заголовки с помощью context.Response.ClearHeaders():

    With context.Response
        .AddHeader("Cache-Control", "store, cache")
        .AddHeader("Pragma", "cache")
        .AddHeader("Cache-Control", "max-age=21600")
        .AddHeader("ETag", Date.Now.Ticks)
        .AddHeader("Expires", DateTime.Now.AddYears(1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT")
        .AddHeader("Vary", "Accept-Encoding")
        .AppendHeader("Vary", "Accept-Encoding")
        .Cache.SetVaryByCustom("Accept-Encoding")
        .Cache.SetOmitVaryStar(True)
        .Cache.VaryByParams.IgnoreParams = True
        .Cache.SetAllowResponseInBrowserHistory(True)
        .Cache.SetCacheability(Web.HttpCacheability.Public)
        .Cache.SetValidUntilExpires(True)
        .Cache.SetLastModified(DateTime.Now.AddYears(-1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT")
        .CacheControl = "public" '
        .Expires = 24 * 60 * 366
        .ExpiresAbsolute = DateTime.Now.AddYears(1).ToString("ddd, dd MMM yyyy hh:mm:ss") + " GMT"
    End With
7
задан Kevin 10 April 2012 в 13:35
поделиться