Укажите несколько схем httpCompression (gzip + brotli) в IIS7 / 8 / 8.5 и определите приоритеты brotli

я пытаюсь получить новый кодом Brotli схема сжатия, работающая в IIS с использованием"модуль сжатия Brotli для Microsoft IIS " by iisspeed.com.

сам модуль сжатия Brotli отлично работает, если я изменю config в applicationHost.config to только имейте модуль Brotli.

проблема в том, что я хочу иметь и gzip и Brotli, и предпочитают Кодом Brotli

документация на iisspeed.com говорит сделать это:

<httpCompression directory="pathtotempfolder" minFileSizeForComp="50">
        <scheme name="br" dll="pathtoiisbrotli.dll" />
        <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" />
        ...
</httpCompression>

однако я обнаружил, что это не работает.

браузер (Chrome в этом примере) отправляет следующее :

accept-encoding: gzip, deflate, sdch, br

это означает, что браузер может принять кодировку Brotli br а также gzip. я хочу, чтобы IIS предпочитал br над gzip но, похоже, нет способа определить приоритеты каждого <scheme> элемент в конфигурации. Я попытался изменить порядок в.файл конфигурации, но он не имеет никакого эффекта.

IIS всегда использует gzip хотя br поддерживается и будет предпочтен, потому что это меньший размер файла.

я просмотрел Google, чтобы найти, что раньше был параметр приоритета для каждой схемы сжатия в IIS 6, но, похоже, он был удален в IIS7+.

это называется HcPriority и вошел в МЕТАБАЗУ IIS6 XML файл.

посмотреть следующие ссылки:

https://msdn.microsoft.com/en-us/library/ms525366 (v=против 90).aspx

https://blogs.iis.net/ksingla/changes-to-compression-in-iis7

https://forums.iis.net/t/1150520.aspx

есть ли что-нибудь, что я могу сделать для IIS7+, чтобы сказать IIS, чтобы предпочесть br над gzip если клиент его принимает?

2 ответов


кажется, что модуль Brotli, на который вы ссылались, требует платной лицензии, поэтому я не пробовал его, но я столкнулся с аналогичной проблемой с моим собственным плагин Brotli с открытым исходным кодом для IIS.

как вы указали, текущие браузеры рекламируют поддержку Brotli после gzip и deflate на


из вашей второй ссылки (подчеркивает мою):

HcPriority удаляется как схема для использования, когда несколько из них появляются в заголовке Accept-Encoding запроса выбрал в зависимости от схемы, которая появится первая в заголовке Accept-Encoding (при условии отсутствия q-фактора). это согласно спецификациям HTTP.

вопросы: HTTP: какова предпочтительная Accept-кодировка для "gzip,deflate"?

Если вы делаете сделать тот же запрос с Accept-Encoding: br, gzip, deflate, через HTTP-клиент, который позволяет вручную установить заголовки запроса (например,почтальон или Саша) или расширение браузера, которое позволяет изменять заголовки запросов (например, ModHeader для Chrome), вы должны увидеть ответ, закодированный с Brotli, даже если доступны gzip и/или deflate.

EDIT: я смог заставить модуль Brotli работать по желанию (т. е. использовать кодировку Brotli, когда она привязана для наиболее предпочтительных независимо от заказа в Accept-Encoding) по регистрация в качестве глобального собственного модуля и приказывать его и перед динамическими и статическими модулями обжатия.