Сжатие GZip в IIS7 не работает, но заголовок кодирования содержимого установлен в gzip - PullRequest
5 голосов
/ 02 августа 2011

У меня IIS 7.5 с включенным статическим и динамическим сжатием. Кажется, что он отлично работает для динамических файлов, но для статических он ведет себя хаотично, часто отправляя заголовок http «Content-Encoding: gzip», когда содержимое не сжато. Это приводит к тому, что браузеры пытаются распаковать, создав неверную магическую ошибку. Вот моя конфигурация:

  <httpCompression dynamicCompressionDisableCpuUsage="95" dynamicCompressionEnableCpuUsage="70" >
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
  <dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
  </dynamicTypes>
  <staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
  </staticTypes>

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

Ответы [ 3 ]

2 голосов
/ 25 октября 2012

Я обнаружил в своих исследованиях, что использование HttpContext.RewritePath () для статического файла вызывает эту проблему.

2 голосов
/ 24 октября 2011

Попробуйте включить динамическое сжатие перед кэшированием, которое по умолчанию отключено.

    <urlCompression dynamicCompressionBeforeCache="true" doDynamicCompression="true" doStaticCompression="true" />
0 голосов
/ 02 апреля 2012

Мне тоже понадобилось время, чтобы понять это.Установка атрибутачастого порога в 1 на узле system.webServer / serverRuntime в файле applicationHost.config должна помочь, как описано в http://www.iis.net/ConfigReference/system.webServer/serverRuntime.

Это можно сделать, выполнив следующую команду от имени администратора:

%windir%\system32\inetsrv\appcmd set config /section:serverRuntime /frequentHitThreshold:1 /commit:apphost

Слово предупреждения - концепция «частого попадания» не кажется специфической для сжатия.Я понятия не имею, есть ли другие последствия в результате установки этого!

...