Ответы:
Вы можете включить сжатие 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 или элемент управления, пока вы нажимаете кнопку обновления) и проверьте еще раз.
.js
не так. Также попробовал добавить application/x-javascript
. Используя вместе с tomcat, отсюда убрал directory
параметр.
Вам нужно будет включить эту функцию на панели управления Windows Features:
Глобальный 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, как упоминал Чарли. Для людей, которые не могут найти ее в Windows 10 или сервере 2012+, найдите ее, как показано ниже. Я немного боролся
Если вы также пытаетесь сжать динамические страницы (например, aspx) и он не работает, вероятно, это потому, что эта опция не включена (вам нужно установить модуль динамического сжатия содержимого с помощью функций Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
Еще один простой способ тестирования без установки чего-либо, также он не зависит от версии IIS. Вставьте свой URL по этой ссылке - SEO Checkup
Чтобы добавить в web.config: http://www.iis.net/configreference/system.webserver/httpcompression
Попробуйте Firefox с установленными аддонами Firebug. Я использую это; отличный инструмент для веб-разработчика.
Я также включил сжатие Gzip в своем IIS7, используя web.config.