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

IIS 7.5 успешно сжимает, но в ответ отправляет несжатую версию

У меня есть настройка IIS 7.5 для использования сжатия gzip как для статического, так и для динамического содержимого. Изучив папку «Временные сжатые файлы IIS», я убедился, что она действительно сжимает все статические типы MIME, которые я определил в своей конфигурации. Я также принудительно использовал трассировку неудачных запросов и обнаружил, что сжатие успешно выполняется без ошибок, когда приходит запрос (как статический, так и динамический).

Однако ответ, который IIS отправляет браузеру, несжатый. Размер ответа тот же, и в ответе нет заголовка «Content-Encoded: gzip».

Моя конфигурация IIS:

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="1" noCompressionForHttp10="false" noCompressionForProxies="false">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="application/json; charset=utf-8" enabled="true" />
            <add mimeType="application/javascript" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </dynamicTypes>
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="application/javascript" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
    </httpCompression>
    ...
    <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    ...
    <serverRuntime frequentHitThreshold="1" />

Пример запроса (пример динамический, но то же самое касается и статических типов):

    Accept:application/json, text/plain, */*
    Accept-Encoding:gzip, deflate
    Accept-Language:en-US,en;q=0.8
    Cache-Control:no-cache
    Connection:keep-alive
    Content-Length:0
    Cookie:ASP.NET_SessionId=...
    Host:...
    Origin:...
    Pragma:no-cache
    Referer:...
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

Образец ответа:

    Cache-Control:private
    Content-Type:application/json; charset=utf-8
    Date:Tue, 29 Sep 2015 21:37:28 GMT
    Server:Microsoft-IIS/7.5
    Set-Cookie:.ASPXAUTH=...
    Transfer-Encoding:chunked
    Vary:Accept-Encoding
    X-AspNet-Version:4.0.30319
    X-AspNetMvc-Version:5.0
    X-Powered-By:ASP.NET

Опять же, я подтвердил, что он успешно сжимается, просто по какой-то причине он не отправляет сжатые данные в ответ.