Powodem, dla którego kompresuje tylko plik ASPX, jest to, że napisany kod jest osadzony tylko w pliku ASPX. Plik ASPX to żądanie oddzielne od wszelkiej zawartej w nim połączonej zawartości. Więc jeśli masz stronę ASPX, która zawiera:
<img src="www.example.com\exampleimg.jpg" alt="example" />
Oznaczałoby to 2 żądania (pomijając wyszukiwania DNS) z przeglądarki do zasobów:
- dla strony aspx i
- dla obrazu zawartego na stronie aspx.
Każde żądanie ma własną odpowiedź. Opublikowany kod jest dołączany tylko do strumienia odpowiedzi ASPX, dlatego kompresowana jest tylko strona ASPX. Wiersze 1 i 2 twojego opublikowanego kodu zasadniczo przejmują normalny strumień odpowiedzi strony i wprowadzają jakiś kod „pośredniego człowieka”, który w tym przypadku zjada i kompresuje normalny strumień wyjściowy za pomocą strumienia GZip i zamiast tego przesyła go dalej.
Wiersze 3 i 4 konfigurują nagłówki odpowiedzi. Wszystkie żądania i odpowiedzi HTTP mają nagłówki, które są wysyłane przed treścią. Konfigurują one żądanie / odpowiedź, aby serwer i klient wiedzieli, co jest wysyłane i jak.
W tym przypadku wiersz 3 informuje przeglądarkę klienta, że strumień odpowiedzi jest kompresowany za pomocą programu gzip i dlatego przed wyświetleniem musi zostać zdekompresowany przez przeglądarkę klienta.
Linia 4 po prostu włącza nagłówek Accept-Encoding odpowiedzi. W przeciwnym razie nie byłoby tego odpowiedzi.
Istnieją dołączane moduły, które można zapisywać / uzyskiwać, które pozwalają na kompresję wielu innych typów MIME, takich jak * .js i * .css, ale lepiej jest po prostu używać wbudowanej funkcji kompresji usług IIS.
Nie powiedziałeś, której wersji IIS używasz, ale gdyby był to IIS 7.0, wymagałoby to umieszczenia czegoś podobnego do poniższego w <system.webserver>
sekcji twojego pliku web.config:
<httpCompression>
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" />
..
Richard