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

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

Результат Google Chrome Audit:

  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 КБ

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

    

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

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

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

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

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

 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); } } } 

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

Ниже приведены инструкции для IIS с сайта microsoft.

  • IIS app pool recycle + quartz scheduling
  • Как сохранить сборки ASP.NET в AppDomain в живых?
  • Сделать MSDeploy (Visual Studio) не удалять папку App_Data, но удалять все остальное
  • Как ASP.NET многопоточен?
  • Что заставляет пул приложений в IIS перерабатывать?
  • Как настроить IIS для приема запросов POST?
  • Проверьте, существует ли изображение в C #
  • asp.net - сеанс - несколько вкладок браузера - разные сеансы?
  • IIS 7.5 + включить PUT и DELETE для службы RESTFul, без расширения
  • Не удается запустить веб-приложение ASP.NET MVC 2 на IIS 7.5
  • Можете ли вы предотвратить закрытие приложения ASP.NET?
  • Давайте будем гением компьютера.