it-swarm.com.ru

Как включить сжатие gzip при использовании MVC3 на IIS7?

Кто-нибудь знает, как включить сжатие gzip в MVC 3? Я использую IIS7.

Google Chrome Результат аудита:

  1. Включить сжатие gzip (4)
  2. Сжатие следующих ресурсов с помощью gzip может уменьшить объем передаваемых данных примерно на две трети (~ 92,23 КБ):
  3. / mydomain/может сэкономить ~ 1,53 КБ
  4. jquery-1.4.4.min.js может сэкономить ~ 51,35 КБ
  5. Cufon.js может сэкономить ~ 11,89 КБ
  6. Futura.js может сэкономить ~ 27,46 КБ
97
imarkic84

Вы можете настроить сжатие через ваш файл web.config следующим образом:

<system.webServer>
    <urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>

Документацию по этому элементу конфигурации можно найти по адресу iis.net/ConfigReference . Это эквивалент:

  1. Открытие информационных служб Интернета (IIS Manager)
  2. Навигация по древовидной структуре слева, пока не дойдете до виртуального каталога, который вы хотите изменить
  3. Выбор соответствующего виртуального каталога так, чтобы заголовок правой панели стал именем указанного виртуального каталога.
  4. Выбор "Сжатие" под "IIS" в правой панели
  5. Отметив обе опции и выбрав "Применить" в разделе "Действия" справа.

Примечание: (как указано в комментариях) Необходимо убедиться, что установлено динамическое сжатие Http, в противном случае настройка doDynamicCompression="true" не будет иметь никакого эффекта. Самый быстрый способ сделать это:

  1. Пуск> Введите optionalfeatures (это самый быстрый способ открыть окно "Включение или отключение компонентов Windows")
  2. Перейдите к Информационным службам Интернета> Службы всемирной паутины> Функции производительности в древовидном представлении "Функции Windows".
  3. Убедитесь, что "Динамическое сжатие содержимого" отмечен
  4. Нажмите "ОК" и подождите, пока Windows установит компонент
138
Rob

Вы можете сделать это в коде, если вы предпочитаете делать это. Я хотел бы создать базовый контроллер, от которого наследуется каждый элемент управления, и украсить его этим атрибутом ниже.

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(encodingsAccepted)) return;

        encodingsAccepted = encodingsAccepted.ToLowerInvariant();
        var response = filterContext.HttpContext.Response;

        if (encodingsAccepted.Contains("deflate"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
        else if (encodingsAccepted.Contains("gzip"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
    }
}
31
NetProvoke

Сжатие включено/отключено на уровне сервера. См. IIS модуль сжатия в консоли управления iis.

Вот инструкция для IIS с сайта Microsoft.

12
nakhli