2014-01-16 6 views
7

Я хочу включить сжатие gzip для моего сайта, работающего на ASP.NET4.5 с IIS7.5, но не могу его сжать.сжатие gzip не работает, хотя разрешено в applicationHost.config

Я нахожусь на общем хостинге, поэтому я не могу установить это в IIS напрямую.

applicationHost.config

Я изменил это от Deny к Allow (я прочитал здесь, что я не должен изменить allowDefinition настройки: How do you change the allowDefinition section attribute using appcmd in IIS 7?)

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" /> 

web.config моего веб-сайта

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/> 
    <dynamicTypes> 
    <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="application/javascript; charset=utf-8" 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="application/javascript; charset=utf-8" enabled="true"/> 
    <add mimeType="*/*" enabled="false"/> 
    </staticTypes> 
</httpCompression>  

В качестве альтернативы вышесказанному я также попытался добавить это к моему web.config:

<configuration> 
    <system.webServer> 
     <urlCompression doStaticCompression="true" doDynamicCompression="false" /> 
    </system.webServer> 
</configuration> 

Я вижу в диспетчере сервера Windows 2008, что статическое сжатие содержимого устанавливается, но Dynamic нет.

Затем, когда я перехожу в IIS на свой сайт и с компрессией модуля, теперь я вижу, что Enable Dynamic content compression включен (хотя, по-видимому, не установлен), но выделен серым цветом, а статическое сжатие содержимого проверено.

enter image description here

Тем не менее: несмотря на то, как статическое, так и динамическое сжатие контента включены, я вижу, сжатия не происходит с помощью Fiddler.

Кнопка Decode не включена в Fiddler. Я также проверил с http://www.whatsmyip.org/http-compression-test/ и http://www.gidnetwork.com/tools/gzip-test.php

Но то, что я делать, когда я проверяю с Fiddler я вижу, без сжатия GZIP: enter image description here

Я уже проверил эти посты:

http://blog.arvixe.com/how-to-enable-gzip-on-iis7/

Enable IIS7 gzip

+0

ли вам просмотрите эти ответы об авто-декодировании, а также, возможно, проверьте с помощью стороннего производителя, такого как Port80? http://stackoverflow.com/q/897989/231316 –

+0

Я обновил свой пост. Я тестировал и другие сайты. Какой продукт Port80 я должен проверить с помощью: http://www.port80software.com/download/? – Flo

+0

Вот ссылка на их онлайн-тестер: http://www.port80software.com/tools/compresscheck.asp?url=Enter+URL –

ответ

3

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

Кроме того, убедитесь, что перечисленные типы mime соответствуют типам контента, которые вы передаете из своего кода ТОЧНО.

Например для JavaScript:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" /> 
    <dynamicTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    <add mimeType="application/javascript; charset=utf-8" enabled="true" /> 
    <add mimeType="application/json" enabled="true" /> 
    <add mimeType="application/json; charset=utf-8" enabled="true" /> 
    <add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="application/atom+xml" enabled="true" /> 
    <add mimeType="application/xaml+xml" enabled="true" /> 
    <add mimeType="*/*" enabled="false" /> 
    </staticTypes> 
</httpCompression> 

может потребоваться.

Вот еще информация из сообщения в блоге я написал несколько лет назад: http://weblog.west-wind.com/posts/2011/May/05/Builtin-GZipDeflate-Compression-on-IIS-7x

И еще, что говорит о некоторых проблемах, которые звучат похоже на ваш (смотрите в комментариях): http://weblog.west-wind.com/posts/2007/Jun/22/IIS-7-and-JavaScript-Compression-not-working-consistently

 Смежные вопросы

  • Нет связанных вопросов^_^