it-swarm.com.ru

Включить IIS7 GZIP

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

224
Paulo

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

Вы можете включить сжатие 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>

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

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

Content-Encoding: gzip

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

240
Drew Noakes

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

IIS feature screenshot

57
Charlie

Глобальный 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-сообщении между браузером и сервером, включая сжатие, размер файла (который можно сравнить с размером файла на сервере).

36
rizzle

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

 enter image description here

5
Sebastian 506563

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

1
jadusty

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

Windows 10

 enter image description here

windows Server 2012 R2

 enter image description here

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

 enter image description here

1
Ashkan Sirous

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

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

1
steve cook

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

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

0
user495450

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

test gzip

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

0
George

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

 auf deutsch bitte schön

0
Stefan Michev