Укажите несколько схем 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) по регистрация в качестве глобального собственного модуля и приказывать его и перед динамическими и статическими модулями обжатия.