2011-08-01 16 views
5

Mam IIS 7.5 z włączoną kompresją statyczną i dynamiczną. Wydaje się działać dobrze dla plików dynamicznych, ale dla statycznych zachowuje się nieregularnie, często wysyłając nagłówek http "Content-Encoding: gzip", gdy zawartość nie jest skompresowana. Powoduje to, że przeglądarki próbują zdekompresować, powodując błąd nieprawidłowego numeru magicznego. Oto moja konfiguracja:Kompresja GZip w IIS7 nie działa, ale nagłówek kodowania treści jest ustawiony na 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> 

myślałem jakiś moduł http został rozpakowanie zawartości gdzieś w dół rury, ale żaden z nich nie wydają się podejrzane. Jakieś pomysły?

Odpowiedz

2

Spróbuj włączyć dynamiczną kompresję przed pamięcią podręczną, która jest domyślnie wyłączona.

<urlCompression dynamicCompressionBeforeCache="true" doDynamicCompression="true" doStaticCompression="true" /> 
+1

Dzięki za sugestię. Próbowałem umieścić tę linię w , ale to nie miało znaczenia. Dowolny pomysł? – sboisse

0

Zajęło mi to trochę czasu. Ustawienie atrybutu frequentHitThreshold na 1 w węźle system.webServer/serverRuntime w pliku applicationHost.config powinno załatwić sprawę, co udokumentowano pod numerem http://www.iis.net/ConfigReference/system.webServer/serverRuntime.

Można to zrobić wykonując następujące polecenia jako administrator:

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

Słowo ostrzeżenia - w „częste przebój” pojęcie nie wydaje specyficzny do kompresji. Nie mam pojęcia, czy w wyniku ustawienia tego są inne konsekwencje!

2

Dowiedziałem się w moich badaniach, że użycie HttpContext.RewritePath() na statycznym pliku powoduje ten problem.

+0

To dziwne, ale widzę, że to również jest prawdą, przynajmniej na jednym z moich serwerów QA (W2K8/IIS 7.5). – rsbarro