Назад | Перейти на главную страницу

Сбой сжатия IIS7: «COMPRESSION_DISABLED», несмотря на то, что параметр включен

Мне не удалось заставить сжатие 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; они установлены? Если да, то на каком уровне?