Мне не удалось заставить сжатие GZIP работать на моем сервере IIS7.5. Я пробовал все предложения в Интернете, в том числе здесь, на ServerFault, и, несмотря ни на что, трассировка всегда возвращается с сообщением «COMPRESSION_DISABLED», но я не знаю, почему он отключен.
В моем applicationHost.config есть следующее:
<httpCompression directory="C:\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="2000">
<scheme name="gzip" dll="C:\Windows\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="true" />
</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 />
Мой DefaultAppPool.config:
<urlCompression dynamicCompressionBeforeCache="true" />
<httpCompression directory="C:\inetpub\temp\IIS Temporary Compressed Files" doDiskSpaceLimiting="false" maxDiskSpaceUsage="1000" minFileSizeForComp="0" noCompressionForHttp10="false" noCompressionForProxies="false" noCompressionForRange="false" staticCompressionEnableCpuUsage="80" dynamicCompressionEnableCpuUsage="80">
<dynamicTypes>
<add mimeType="*/*" enabled="true" />
<add mimeType="text/html" enabled="true" />
</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>
Каждая опция диспетчера IIS, на которую я смотрел, показывает, что сжатие включено. Некоторые данные возвращаются в сжатом виде, но это только содержимое PHP, которое PHP сжал перед передачей в IIS.
Согласно трассировке, все запросы попадают в модуль Static или DynamicCompressionModule, но он всегда терпит неудачу как «COMPRESSION_DISABLED». Есть ли какой-нибудь способ помимо трассировки определить, почему IIS отключает сжатие?
Я выполнил команду
appcmd list config "http://example.com/index.html"
чтобы увидеть полную конфигурацию для этого URL-адреса, и, в соответствии с дамповой конфигурацией, включены параметры сжатия HTTP и URL-адреса, показанные выше, и нет упоминания об отключении сжатия.
Возможно ли, что другой модуль вызывает отключение сжатия? Кеширование вывода?
Так что я не совсем понимаю, в чем может быть проблема.
Я не вижу там doDynamicCompression или doStaticCompression = true; они установлены? Если да, то на каком уровне?