Как я могу включить IIS7 для gzip-архивирования статических файлов, таких как js и css, и как я могу проверить, действительно ли IIS7 архивирует их перед отправкой клиенту?
Включить IIS7 gzip
Ответы (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, пока вы нажимаете кнопку обновления) и проверьте еще раз.
.js
- нет. Также пробовал добавить application/x-javascript
. Используется вместе с tomcat, поэтому параметр directory
был удален.
- person coding_idiot; 28.06.2015
appcmd set config /section:urlCompression /doStaticCompression:True
- person j0ffe; 30.08.2015
<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
application/json
mimetypes. Он сжал бы что-нибудь еще - только не application/json
. Мое обходное решение состояло в том, чтобы изменить тип mimetype на text/json
, тогда вышеуказанная конфигурация работает. См. serverfault.com/questions/426285/
- person Ilan; 30.10.2015
Вам нужно будет включить эту функцию в панели управления функциями Windows:
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-сообщении между браузером и сервером, включая сжатие, размер файла (который можно сравнить с размером файла на сервере).
Если вы используете YSlow с Firebug и анализируете производительность своей страницы, YSlow обязательно скажет вам, какие артефакты на вашей странице не сжаты с помощью gzip!
Если вы также пытаетесь сжимать динамические страницы (например, 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.