Потрібна допомога з деякими налаштуваннями стиснення 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 ...) Що я зробив неправильно?

ура :)

EDIT: Мене запитали, як я знаю, що HTTP1.0 не стискається. Я використовую правила відстеження невдалого запиту, які повідомляють про:

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Відповіді:


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

Ви також appcmdможете встановити налаштування рівня програми (що, мабуть, набагато простіше).
Pure.Krome

2

Після невеликої кількості досліджень, вона "замикається" за замовчуванням на рівні програми. Таким чином, його потрібно "розблокувати". цього можна досягти за допомогою командного рядка або через (додаткове завантаження) інструменти адміністрування iis7.

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

Відгуки:


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 Причина: 3 Причина: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.