Включить IIS7 gzip

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


person Paulo    schedule 31.03.2009    source источник


Ответы (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 или Control, пока вы нажимаете кнопку обновления) и проверьте еще раз.

person Drew Noakes    schedule 26.03.2011
comment
@DenNukem, извините, я не совсем уверен. Я тестировал это только на IIS7. Кто-нибудь еще хочет прокомментировать? - person Drew Noakes; 28.04.2011
comment
Осторожно - это работает, только если раздел httpCompression в applicationhost.config разблокирован. По умолчанию этот раздел заблокирован для внесения изменений, поэтому переопределение в web.config не работает. Потратил на это несколько часов. stackoverflow.com/a/2894695/245460, см. комментарий к статье ниже. - person Karel Kral; 20.11.2012
comment
Убедитесь, что это установленная функция веб-роли, а также из MSDN: вы также можете добавить записи с подстановочными знаками для типов MIME. Однако вы можете установить типы MIME только для уровня веб-сервера. Например, чтобы включить статическое сжатие для всех типов MIME для веб-сайта по умолчанию, сначала добавьте записи с подстановочными знаками для типов MIME для уровня сервера, а затем включите статическое сжатие для веб-сайта по умолчанию. - person Luke Puplett; 04.10.2013
comment
Динамическое сжатие также не будет работать, если на сервере не установлен модуль сжатия динамического содержимого (доступный через установщик веб-платформы). Вам это понадобится, если вы используете пакеты Css / Js. - person Mark; 10.11.2013
comment
сжимается только css, .js - нет. Также пробовал добавить application/x-javascript. Используется вместе с tomcat, поэтому параметр directory был удален. - person coding_idiot; 28.06.2015
comment
Если у вас есть доступ к установке IIS, а файл web.config заблокирован, описанный выше трюк все равно не сработает. Простой способ разблокировать / включить сжатие IIS: appcmd set config /section:urlCompression /doStaticCompression:True - person j0ffe; 30.08.2015
comment
Остерегайтесь IIS 7.5 !! Недостаточно иметь только разделы <httpCompression> и <urlCompression>, потому что IIS считает файл пригодным для сжатия только в том случае, если к нему часто обращаются. Поэтому вам необходимо настроить этот параметр <serverRuntime frequentHitThreshold="some_val_here" frequentHitTimePeriod="some_val_here" /> См. Дополнительную информацию здесь: stackoverflow.com/a/15626981 ‹br› И если вы решите отредактировать %windir%\System32\inetsrv\config\applicationHost.config в 64-битной Windows с помощью Notepad ++ или любого другого 32-битного редактора вам может потребоваться другой путь, см .: forum.iis.net/t/1151982.aspx - person Alec; 08.10.2015
comment
Мне не удалось заставить IIS 10 сжать application/json mimetypes. Он сжал бы что-нибудь еще - только не application/json. Мое обходное решение состояло в том, чтобы изменить тип mimetype на text/json, тогда вышеуказанная конфигурация работает. См. serverfault.com/questions/426285/ - person Ilan; 30.10.2015
comment
У меня есть файлы сборки angular в виде статических файлов для сжатия, но после этого я нахожу кодировку содержимого в виде gzip - person Sanjay Sahani; 13.01.2021
comment
Я столкнулся с одной проблемой: я вижу заголовок запроса, например Content-Encoding: gzip, но иногда он появляется автоматически и после обновления исчезает. - person Sanjay Sahani; 13.01.2021

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

Снимок экрана функции IIS

person Charlie    schedule 28.02.2014
comment
В Windows Server 2008 R2 он находится в Диспетчере серверов ›Роли› Веб-сервер (IIS). Щелкните Добавить службы ролей в разделе Роли. Сжатие динамического содержимого указано под заголовком «Производительность». - person Jonathan Little; 10.12.2015

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

person missaghi    schedule 31.03.2009
comment
Я использую общий хостинг, и мне не нужно было писать код, чтобы включить сжатие вывода GZIP. Это было возможно только через Web.config. См. Мой ответ: stackoverflow.com/questions/702124/enable-iis7 -gzip / - person Drew Noakes; 26.03.2011
comment
Я поместил первые три строки в начало страницы aspx, которую хотел сжать, и это сработало! Спасибо! Это намного проще, чем любой другой подход, и он работает на IIS 6 для меня. - person DenNukem; 28.04.2011
comment
Это абсолютно правильный способ сделать это. - person Matthew James Davis; 21.08.2013

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

введите описание изображения здесь

person Sebastian 506563    schedule 16.11.2016

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

Windows 10

введите описание изображения здесь

Windows Server 2012 R2

введите описание изображения здесь

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

введите описание изображения здесь

person Ashkan Sirous    schedule 24.04.2017

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

person jadusty    schedule 01.04.2009

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

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

person steve cook    schedule 12.11.2013

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

auf deutsch bitte schön

person Stefan Michev    schedule 07.09.2018

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

test gzip

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

person George    schedule 30.04.2014

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

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

person user495450    schedule 03.11.2010
comment
У Google также доступен тест страницы: developers.google.com/speed/pagespeed/insights - person Dr. Aaron Dishno; 25.02.2016