2013-03-19 26 views
7

Mam następujący web.config:IIS 7.5 Static Content kompresji (nie spójne)

<urlCompression doStaticCompression="true" /> 
     <httpCompression> 
      <dynamicTypes> 
       <add mimeType="text/*" enabled="true" /> 
       <add mimeType="message/*" enabled="true" /> 
       <add mimeType="application/javascript" 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="*/*" enabled="false" /> 
      </staticTypes> 
     </httpCompression> 

maja plan nie umożliwiają dynamicznych kompresji

Problemem jest to, kiedy poprosić CSS lub JS, IIS odpowiadaj za pomocą GZIP i dodawaj zmiany: czasami akceptuj kodowanie, a inny czas nie kompresuje CSS ani JS, nie mogę znaleźć wzorca, który jest losowy.

Zawsze próbuję CTRL F5, nawet gdy masz dostęp do strony www.mysite.com css i js są losowo kompresowane lub nie.

NB: hostowane w NetworkSolution.

Co jest nie tak z moją konfiguracją lub IIS.

Dzięki

+0

Kiedy próbuję http://cdn.novopath.com/content/css/master.css na http://www.whatsmyip.org/http-compression-test/ pierwszy raz mówi, że nie jest skompresowany po raz drugi mówi sprężony! – Sameh

Odpowiedz

15

Po wielu poszukiwaniach w końcu znalazłem co mam kompresji działa bardziej konsekwentnie na moim IIS 7.5. Po pierwsze, usługi IIS nie będą kompresować pliku, dopóki nie zostanie załadowany wystarczająco często. Pojawia się pytanie "co IIS uważa za wystarczająco często?" Domyślne wartości to 2 razy co 10 sekund. Yikes!

To ustawienie można zmienić w pliku web.config, ale sekcję należy najpierw odblokować w pliku applicationHost.config. Oto polecenia:

Pierwsza odblokować sekcję:

C: \ Windows \ System32 \ inetsrv \ appcmd.exe odblokowania config /section:system.webServer/serverRuntime

Unlocked sekcja "system.webServer/serverRuntime" w ścieżce konfiguracyjnej "MACHINE/WEBROOT/APPHOST".

Teraz to jest zrobione, edytować plik web.config

<?xml version="1.0" encoding="UTF-8"?> <configuration> 
    <system.webServer> 
     <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" /> 
     ... 

W tym przypadku, ustawić go uderzyć plik raz w okresie 10-godzinnym. W razie potrzeby możesz dostosować wartości. Oto dokument, który wyjaśnia element serverRuntime:

http://www.iis.net/configreference/system.webserver/serverruntime

Mam nadzieję, że to pomaga otrzymać kompresja działa prawidłowo.

+0

Utworzyłem ostatnio odpowiedź, która zapewni nieco więcej wyjaśnień: http://stackoverflow.com/questions/14796225/gzip-js-in-iis-doesnt-get-compressed-if-static-compression-enabled/24906331 # 24906331 – ianbeks

+0

dotyczy to również dynamicznej kompresji zawartości? – TheQult