Я пытаюсь поддерживать сжатие GZip для своих статических файлов в IIS (которое должно быть включено по умолчанию, но не работает), но пока не работает. Вот раздел под <system.webServer>
узел внутри файла web.config веб-приложения;
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" />
Я пробовал с Google Chrome. Вот заголовки запроса;
Принять: text / html, application / xhtml + xml, application / xml; q = 0.9,/; q = 0,8
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3
Принятие кодировки: gzip, deflate, sdch
Accept-Language: en-US, en; q = 0,8
Cache-Control: без кеша
Подключение: keep-alive
Хост: my-website-url
Прагма: без кеширования
Пользовательский агент: Mozilla / 5.0 (Windows NT 6.0) AppleWebKit / 534.30 (KHTML, как Gecko) Chrome / 12.0.742.122 Safari / 534.30
Это заголовки ответа;
Accept-Ranges: байты
Длина содержимого: 232651
Тип содержимого: приложение / x-javascript
Дата: четверг, 04 августа 2011 г., 08:58:19 GMT
ETag: "a69135734a50cc1: 0"
Последнее изменение: понедельник, 1 августа 2011 г., 12:56:37 GMT
Сервер: Microsoft-IIS / 7.5
X-Powered-By: ASP.NET
Я проверил файл applicationHost.config и нашел несколько узлов, как показано ниже;
----
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
----
<section name="urlCompression" overrideModeDefault="Allow" />
----
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
----
<urlCompression />
Что мне здесь не хватает?
Похоже, у вас могут быть неправильно установлены разрешения для папки временного сжатия. Вы должны убедиться, что пользователь, установленный вашей установкой IIS (или приложение), имеет разрешение на запись в папку сжатия.
После долгих поисков я наконец нашел то, что заставило сжатие работать на моем IIS 7.5. Начнем с того, что IIS не сжимает файл, если он не загружается достаточно часто. Возникает вопрос: «Что IIS рассматривает достаточно часто?» Ну по умолчанию 2 раза каждые 10 секунд. Ой!
Этот параметр можно изменить в web.config, но сначала необходимо разблокировать раздел в applicationHost.config. Вот команды:
Сначала разблокируйте раздел:
C: \ Windows \ System32 \ inetsrv \ appcmd.exe конфигурация разблокировки /section:system.webServer/serverRuntime
Разблокирован раздел "system.webServer / serverRuntime" в пути конфигурации "MACHINE / WEBROOT / APPHOST".
Теперь, когда это сделано, отредактируйте файл web.config и добавьте элемент serverRuntime:
<?xml version="1.0" encoding="UTF-8"?> <configuration>
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" />
...
В этом случае я настроил его на обращение к файлу один раз в 10 часов. При необходимости вы можете изменить значения. Вот документ, объясняющий элемент serverRuntime:
http://www.iis.net/configreference/system.webserver/serverruntime
Я надеюсь, что это поможет и вашему сжатию.
Примечание: вы также можете установить элемент serverRuntime в файле applicationHost.config, но я решил изменить его в web.config, потому что у нас есть несколько серверов и ферм с различными сайтами, и мне легче управлять им. с этого уровня детализации.
Это работает для меня:
<urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression noCompressionForRange="false" noCompressionForHttp10="false" noCompressionForProxies="false">
<dynamicTypes>
<add mimeType="text/css" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/css" enabled="true" />
</staticTypes>
<staticTypes>
<add mimeType="text/javascript" enabled="true" />
</staticTypes>
</httpCompression>
Существует также mime-тип text / javascript, и у вас есть только одно приложение. Это была проблема, пока я не включил текст / ...