IIS 7 HttpCompression не работает - PullRequest
2 голосов
/ 12 декабря 2010

Я использую следующий блок web.config для включения статического и динамического сжатия на IIS7, но он не сжимает ответ. (Проверено с помощью Fiddler)

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
     <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
     <dynamicTypes>
           <add mimeType="text/css" enabled="true" />
           <add mimeType="message/*" enabled="true" />
           <add mimeType="application/x-javascript" enabled="true" />
           <add mimeType="*/*" enabled="true" />
     </dynamicTypes>
     <staticTypes>
           <add mimeType="text/css" enabled="true" />
           <add mimeType="text/javascript" enabled="true" />
           <add mimeType="message/*" enabled="true" />
           <add mimeType="application/x-javascript" enabled="true" />
           <add mimeType="*/*" enabled="true" />
     </staticTypes>
</httpCompression>
 <staticContent>
    <remove fileExtension=".js" />
    <mimeMap fileExtension=".js" mimeType="application/x-javascript" />
</staticContent>

Пока он не выполняет никакого сжатия.Я также проверил, что на сервере установлено статическое / динамическое сжатие. Также пробовал это how-can-i-get-gzip-compress-in-iis7-working , но у меня не работает.Может кто-нибудь помочь с чем-то новым?

Ответы [ 2 ]

2 голосов
/ 04 октября 2013

У меня были проблемы с настройкой, следуя советам по StackOverflow.Вот как мне это удалось.

Во-первых, убедитесь, что динамическое сжатие установлено как функция веб-роли.Обычно вы получаете предупреждение в IIS Manager, если модуль не установлен, но вы не получите его, если вы вручную установите web.config, поскольку он обманывает логику интерфейса IIS.

Затем я удалил всеМатериал web.config (как в вашем вопросе) и установите его через IIS Manager.Я сделал это, потому что в MSDN легко пропускаемый комментарий говорит:

Вы также можете добавить подстановочные знаки для типов MIME.Однако вы можете установить типы MIME только для уровня веб-сервера.Например, чтобы включить статическое сжатие для всех типов MIME для веб-сайта по умолчанию, сначала добавьте подстановочные знаки для типов MIME для уровня сервера, а затем включите статическое сжатие для веб-сайта по умолчанию.

Сосредоточьтесь на:

Однако вы можете установить типы MIME только для уровня веб-сервера.

Так что я не уверен, действительно ли все эти фильтры и другие вещи работают в сети.config.Лично это не для меня - то есть без заголовка Content-Encoding: gzip.

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

В итоге я набрал <urlCompression doDynamicCompression="true" /> в файле web.config, что немного странно, так как я нене заботятся о сжатии URL.

Что угодно.Теперь у меня есть Content-Encoding: gzip в заголовках ответов для моего сайта - поэтому я предполагаю, что он работает.

1 голос
/ 15 декабря 2010

Не могли бы вы включить трассировку Failed Request, она должна содержать информацию о том, что может происходить, обычно она попадает в несколько сегментов, 1) Разрешения на создание сжатого файла, 2) Файл слишком мал, чтобы требовать сжатия, 3) Файлне достаточно часто, поэтому не сжимается, 4) проблема mimetype

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis7/

...