Как я могу решить, почему мой сайт IIS7 не сжимает gzip?
У меня есть несколько сайтов на одной машине IIS7 под управлением W2K8.
Я использую Fiddler, чтобы выяснить, сжато ли что-то или нет. Ничего.
Итак, я погуглил несколько вещей и попробовал некоторые вещи. У меня есть следующее...
C:\Windows\System32\inetsrv>appcmd set config -section:urlCompression /doDynamic
Compression:true
Applied configuration changes to section "system.webServer/urlCompression" for "
MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
C:\Windows\System32\inetsrv>appcmd list config -section:urlCompression
<system.webServer>
<urlCompression doDynamicCompression="true" />
</system.webServer>
C:\Windows\System32\inetsrv>appcmd list config -section:serverRuntime
<system.webServer>
<serverRuntime frequentHitThreshold="1" />
</system.webServer>
Я убедился, что разделы urlCompression, httpCompression и serverRuntime разблокированы.
Я также добавил следующее в мой web.config:-
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:10:00" />
<!-- NOTE: This requires the following section to be unlocked: appcmd set config -section:urlCompression /doDynamicCompression:true -->
<urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression noCompressionForHttp10="False" noCompressionForProxies="False">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="4" staticCompressionLevel="9" />
<dynamicTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
<staticTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</staticTypes>
</httpCompression>
<caching>
<profiles>
<add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".zip" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".htm" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
</profiles>
</caching>
<staticContent>
<clientCache cacheControlMaxAge="31.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>
....
</system.webServer>
Так что проверяя это, я не уверен, что я сделал неправильно...??? какие-либо предложения? Как я могу отладить это, чтобы увидеть, что не получается прочитать это правильно, и т. д.?
Я также делал "принудительное обновление", когда беру контент веб-сайта и т. Д. Определенно не получаю сжатие сервера:(
Пожалуйста помоги!
Обновление 1: запрос браузера включает Accept-Encoding: gzip, deflate.
2 ответа
Для основы:
Убедитесь, что браузер действительно отправляет заголовок Accept-Encoding и не удаляется брандмауэрами.
Включите отслеживание невыполненных запросов в ответе 200 и Сжатие веб-сервера и посмотрите, что он говорит, когда IIS7 пытается сжать ответ.
Вы не используете HTTP 1.0 в своем тестировании? NoCompressionForHTTP10="False" предотвратит это.
Я предлагаю начать сначала и заставить компрессию работать со значениями по умолчанию, а затем добавлять детали обратно, пока они снова не сломаются. Вот установка по умолчанию для новой установки:
<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/x-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>