Как мне включить IIS7 для gzip статических файлов, таких как js и css, и как я могу проверить, действительно ли IIS7 gziping их перед отправкой клиенту?
Спасибо!
Как мне включить IIS7 для gzip статических файлов, таких как js и css, и как я могу проверить, действительно ли IIS7 gziping их перед отправкой клиенту?
Спасибо!
Вы можете полностью включить сжатие GZIP в файле Web.config
. Это особенно полезно, если вы используете общий хостинг и не можете настроить IIS напрямую, или вы хотите, чтобы ваш config нести все объекты, на которые вы нацелились.
<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 при нажатии кнопки обновления) и проверьте еще раз.
Вам нужно включить эту функцию на панели управления Windows:
Глобальный 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;
Тестирование
Kudos, решение не выполняется без тестирования. Мне нравится использовать плагин Firefox " Liveheaders" он отображает всю информацию о каждом HTTP-сообщении между браузером и сервером, включая сжатие, размер файла ( которые можно сравнить с размером файла на сервере).
под окнами 2012 r2 можно найти здесь:
Если вы используете YSlow с Firebug и анализируете производительность своей страницы, YSlow, безусловно, скажет вам, какие артефакты на вашей странице не являются gzip'd!
Если вы также пытаетесь gzip динамические страницы (например, aspx), и он не работает, вероятно, потому, что опция не включена (вам нужно установить модуль динамического содержимого с использованием функций Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
Мне нужно было добавить функцию в функции Windows, как упоминал Чарли. Для людей, которые не могут найти их в окне 10 или на сервере 2012+, найдите его, как показано ниже. Я немного боролся
Попробуйте Firefox с дополнениями Firebug. Я использую его; отличный инструмент для веб-разработчиков.
У меня есть возможность сжатия Gzip, а также в моем IIS7 с помощью web.config.
Еще один простой способ протестировать, не устанавливая ничего, и не зависит от версии IIS. Вставьте свой url на этот ссылка - проверка SEO
Чтобы добавить в web.config: http://www.iis.net/configreference/system.webserver/httpcompression