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

9

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

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 сказано, что она может быть использована в:

  • Machine.config
  • ApplicationHost.config
  • Корневое приложение Web.config
  • Приложение Web.config
  • Каталог Web.config

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

ура :)

РЕДАКТИРОВАТЬ: Меня спросили, как я знаю, HTTP1.0 не сжимается. Я использую Правила отслеживания невыполненных запросов, которые сообщают:

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
Pure.Krome
источник

Ответы:

3

Обратите особое внимание на то, что параметр 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
evermeire
источник
Вы также можете использовать appcmdдля установки настроек уровня приложения (что, вероятно, намного проще).
Чисто.Кроме
2

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

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

Refrences:

Pure.Krome
источник
1

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

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

Accept-Encoding: compress, gzip, deflate

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

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

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

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