Статическое сжатие в IIS не работает для файлов htm, js

Я пытаюсь настроить IIS 7.5 для сжатия статических файлов htm и js. Кто-нибудь знает, почему это не работает для меня? Вот мой web.config для веб-сайта:

    <httpCompression>          
        <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/x-javascript" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
    </httpCompression>
    <urlCompression doStaticCompression="true" doDynamicCompression="false" />

Сжатие начинает работать, когда я устанавливаю для doDynamicCompression значение true. Но я не могу использовать эту опцию, потому что она отключена на моем хостинге.

Спасибо.


person Evgenii    schedule 01.04.2011    source источник
comment
Я нахожу ту же проблему. Похоже, файлы CSS сжимаются, если включено статическое сжатие. Но мне нужно динамическое сжатие для js. И если я это сделаю, он также сделает .aspx. Далее схема httpCompression, похоже, не действует.   -  person JNappi    schedule 07.07.2011


Ответы (3)


Включение кэширования и сжатия Http в IIS 7 для веб-сайтов asp.net — Анил Касаланати

Как насчет этого? Проверьте свой файл applicationHost.config.

person takepara    schedule 02.04.2011
comment
Хорошая ссылка, спасибо. Я нашел несоответствие mime-типов в applicationHost.config, исправил, но мне это не помогло. - person Evgenii; 03.04.2011

Что заставляет вас думать, что компрессия не работает? Проверьте журналы просмотра событий. Модуль статического сжатия иногда выдает ошибку о том, что используемый каталог недействителен (в основном потому, что ему требуются права на запись).

Дважды проверьте с помощью Fiddler или другого инструмента отладки HTTP, чтобы убедиться, что клиент отправляет «Accept-Encoding» GZIP/Deflate.

person Tim P.    schedule 01.04.2011
comment
Спасибо за советы. Да, именно так я определяю, работает ли сжатие - просматривая HTTP-заголовки ответа. Он отправляет Content-Encoding: gzip только тогда, когда doDynamicCompression=true. В журналах событий ничего нет, я даже пробовал дать все разрешения Всем для папки C:\inetpub\temp\IIS Temporary Compressed Files - не помогло. - person Evgenii; 03.04.2011

Я удалил mimeType="application/x-javascript" из dynamicTypes, но оставил его в staticTypes. Это позволило мне отключить динамическое сжатие, но при этом сжать javascript.

Я читал некоторые сообщения, которые предполагают, что, когда у вас есть один и тот же тип mimeType как в динамическом, так и в статическом, значение в динамике выигрывает. Когда dynamicCompression отключен, но есть соответствие для него в dynamicTypes, javascript рассматривается как динамический и, следовательно, отключен.

Это не объясняет, почему CSS работает, потому что mimeType="text/" есть в обоих местах. IIS должен лучше определять динамическое и статическое содержимое, когда речь идет о CSS или любом тексте/.

person JNappi    schedule 07.07.2011