Odpowiedzi:
Możesz włączyć kompresję GZIP całkowicie w swoim Web.config
pliku. Jest to szczególnie przydatne, jeśli korzystasz z hostingu współdzielonego i nie możesz bezpośrednio skonfigurować usług IIS lub chcesz, aby konfiguracja była przenoszona między wszystkimi środowiskami docelowymi.
<system.webServer>
<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="*/*" 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>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
Aby sprawdzić, czy kompresja działa, użyj narzędzi programistycznych w Chrome lub Firebug dla Firefoksa i upewnij się, że ustawiony jest nagłówek odpowiedzi HTTP:
Content-Encoding: gzip
Pamiętaj, że ten nagłówek nie będzie obecny, jeśli kod odpowiedzi to 304 (niezmodyfikowany). W takim przypadku wykonaj pełne odświeżenie (przytrzymaj klawisz Shift lub Control podczas naciskania przycisku odświeżania) i sprawdź ponownie.
.js
nie robi tego. Próbowałem również dodać application/x-javascript
. Używając razem z tomcat, usunąłem directory
parametr.
Musisz włączyć tę funkcję w panelu sterowania Funkcje systemu Windows:
Globalny Gzip w HttpModule
Jeśli nie masz dostępu do końcowej instancji IIS (hosting współdzielony ...), możesz utworzyć HttpModule, który dodaje ten kod do każdego zdarzenia HttpApplication.Begin_Request:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Testowanie
Kudos, żadne rozwiązanie nie jest zrobione bez testowania. Lubię używać wtyczki Firefox „ Liveheaders ”, która pokazuje wszystkie informacje o każdej wiadomości http między przeglądarką a serwerem, w tym kompresję, rozmiar pliku (który można porównać do rozmiaru pliku na serwerze).
Musiałem tylko dodać tę funkcję do funkcji systemu Windows, jak wspomniał Charlie. Dla osób, które nie mogą jej znaleźć na Windows 10 lub serwerze 2012+, znajdź ją jak poniżej. Walczyłem trochę
Jeśli próbujesz również zgzipować strony dynamiczne (takie jak aspx) i nie działa, to prawdopodobnie dlatego, że opcja nie jest włączona (musisz zainstalować moduł dynamicznej kompresji treści za pomocą funkcji systemu Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
Kolejny łatwy sposób na testowanie bez instalowania czegokolwiek, nie zależy też od wersji IIS. Wklej swój adres URL do tego linku - Sprawdzanie SEO
Aby dodać do web.config: http://www.iis.net/configreference/system.webserver/httpcompression
Wypróbuj Firefox z zainstalowanymi dodatkami Firebug. Używam tego; świetne narzędzie dla programistów stron internetowych.
Mam włączoną kompresję Gzip również w moim IIS7 za pomocą web.config.