Включить IIS7 GZIP

Как я могу включить IIS7 для распаковки статических файлов, таких как js и css, и как я могу проверить, действительно ли IIS7 распаковывает их перед отправкой клиенту?

10 ответов

конфигурация

Вы можете включить сжатие GZIP полностью в вашем Web.config файл. Это особенно полезно, если вы пользуетесь виртуальным хостингом и не можете настроить IIS напрямую, или если вы хотите, чтобы ваша конфигурация передавалась между всеми целевыми средами.

<system.webServer>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

тестирование

Чтобы проверить, работает ли сжатие, используйте инструменты разработчика в Chrome или Firebug для Firefox и убедитесь, что заголовок ответа HTTP установлен:

Content-Encoding: gzip

Обратите внимание, что этот заголовок не будет присутствовать, если код ответа 304 (не изменен). Если это так, выполните полное обновление (удерживайте нажатой клавишу Shift или элемент управления, пока вы нажимаете кнопку обновления) и проверьте снова.

Вам нужно будет включить эту функцию на панели управления функциями Windows:

Скриншот функции IIS

Глобальный Gzip в HttpModule

Если у вас нет доступа к окончательному экземпляру IIS (общий хостинг...), вы можете создать HttpModule, который добавляет этот код в каждое событие HttpApplication.Begin_Request:

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

тестирование

Слава, никакое решение не обходится без тестирования. Мне нравится использовать плагин Firefox " Liveheaders", он показывает всю информацию о каждом http-сообщении между браузером и сервером, включая сжатие, размер файла (который можно сравнить с размером файла на сервере).

Под windows 2012 r2 его можно найти здесь:

Мне только нужно было добавить функцию в функции Windows, как упоминал Чарли. Для людей, которые не могут найти ее в Windows 10 или сервере 2012+, найдите ее, как показано ниже. Я немного боролся

Windows 10

Windows Server 2012 R2

оконный сервер 2016

Для всех бедных парней, которым приходится бороться с немецким / немецким сервером:)

auf deutsch bitte schön

Если вы используете YSlow с Firebug и анализируете производительность своей страницы, YSlow наверняка сообщит вам, какие артефакты на вашей странице не являются gzip'd!

Если вы также пытаетесь сжать динамические страницы (например, aspx) и он не работает, вероятно, это потому, что эта опция не включена (вам нужно установить модуль динамического сжатия содержимого с помощью функций Windows):

http://support.esri.com/en/knowledgebase/techarticles/detail/38616

Еще один простой способ тестирования без установки чего-либо, также он не зависит от версии IIS. Вставьте свой URL по этой ссылке - SEO Checkup

тест gzip

Чтобы добавить в web.config: http://www.iis.net/configreference/system.webserver/httpcompression

Попробуйте Firefox с установленными аддонами Firebug. Я использую это; отличный инструмент для веб-разработчика.

Я также включил сжатие Gzip в IIS7, используя web.config.

Другие вопросы по тегам