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

Нужна помощь с некоторыми настройками сжатия IIS7 web.config

Я пытаюсь настроить параметры сжатия IIS7 в файле web.config. Я пытаюсь включить gzip для запросов HTTP 1.0.

В MSDN есть вся информация об этом здесь.

Можно ли разместить эту информацию о конфигурации в файле web.config моего собственного веб-сайта? Или мне нужно установить его на уровне приложения? В настоящее время у меня есть этот код в моем web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Это не работает :( Запросы HTTP 1.1 сжимаются, только не 1.0.

Эта страница MSDN выше говорит, что ее можно использовать в: -

Итак, можем ли мы установить эти параметры для каждого веб-сайта программно в файле web.config? (это файл Application Web.config ...) Что я сделал не так?

ура :)

EDIT: меня спросили, откуда я знаю, что HTTP1.0 не сжимается. Я использую правила отслеживания неудачных запросов, которые сообщают: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Обратите особое внимание на то, что параметр IIS 7.x web.config для

noCompressionForProxies="false"

Не соблюдается на уровне web.config. Он должен быть установлен в C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config следующим образом:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Обязательно выполните сброс IIS после изменения настройки.

IIS определяет запрос от прокси-сервера, если клиентский веб-запрос имеет HTTP-заголовок «Via», например:

Via: 1.1 foo

После небольшого исследования он по умолчанию «заблокирован» на уровне приложения. Таким образом, он должен быть «разблокирован». это можно сделать через командную строку или с помощью инструментов администрирования iis7 (дополнительная загрузка).

например. appcmd set config -section:urlCompression /doDynamicCompression:true

Ссылки:

Как вы проверяете, что запросы HTTP1.0 не сжимаются? Может быть, клиент, который вы используете, не сообщает серверу, что он может принимать сжатый ответ?

Если вы можете видеть заголовки, отправленные клиентом (представленные самим тестовым клиентом, с помощью Firebug или аналогичного, если вы тестируете в Firefox или IEHTTPHeaders, если вы тестируете в IE, или путем прослушивания трафика с помощью внешнего инструмента), вам следует увидеть что-то вроде

Accept-Encoding: compress, gzip, deflate

где-то там. Если клиент не сообщает серверу, что он может принять сжатый ответ, сервер не отправит его, независимо от того, какие другие настройки у вас есть на стороне сервера.

Другая проблема может возникнуть, если вы тестируете через прокси-сервер, который идентифицировал себя как таковой. В этом случае параметр noCompressionForProxies может иметь приоритет и блокировать возможность сжатого ответа.

Следует отметить, что некоторые клиенты и прокси, которые отправляют запросы HTTP1.0 (обычно более старое программное обеспечение), не будут правильно обрабатывать сжатый ответ, если они его получат, поэтому, если вы действительно включили сжатие для ответов на запросы HTTP1.0, убедитесь, что вы протестируйте свой сайт / приложение во всем программном обеспечении клиента / прокси, которое вы ожидаете от посетителей / пользователей. Это меньшая проблема, если вы можете гарантировать, что ваша целевая аудитория будет использовать определенное программное обеспечение (если, например, приложение предназначено только для внутренней корпоративной сети), но в остальном существует множество комбинаций для тестирования, поэтому большинство серверов отключают сжатие для 1.0 запрашивает полностью.