Причина, по которой он сжимает только ваш файл ASPX, заключается в том, что написанный вами код встроен только в файл ASPX. Файл ASPX - это отдельный запрос от любого связанного содержимого, которое он содержит. Итак, если у вас есть страница ASPX, содержащая:
<img src="www.example.com\exampleimg.jpg" alt="example" />
Это составит 2 запроса (не считая DNS-запросов) от вашего браузера к ресурсам:
- для страницы aspx и
- для изображения, содержащегося на странице aspx.
На каждый запрос есть своя пара ответов. Опубликованный вами код прикрепляется только к потоку ответов ASPX, поэтому сжимается только ваша страница ASPX. Строки 1 и 2 вашего опубликованного кода, по сути, берут на себя нормальный поток ответов страницы и вводят некоторый код «среднего человека», который в этом случае съедает и сжимает нормальный выходной поток с потоком GZip и вместо этого отправляет его по сети.
Строки 3 и 4 устанавливают заголовки ответа. Все HTTP-запросы и ответы имеют заголовки, которые отправляются перед содержанием. Они настраивают запрос / ответ так, чтобы сервер и клиент знали, что и как отправляется.
В этом случае строка 3 информирует браузер клиента о том, что поток ответа сжимается через gzip и, следовательно, перед отображением его необходимо распаковать в браузере клиента.
А в строке 4 просто включается заголовок ответа Accept-Encoding. В противном случае это не было бы в ответе.
Вы можете написать / получить подключаемые модули, которые позволяют сжимать множество других типов MIME, таких как * .js и * .css, но вам лучше просто использовать встроенные функции сжатия IIS.
Вы не сказали, какую версию IIS вы используете, но если бы это был IIS 7.0, вам потребовалось бы включить что-то вроде следующего в <system.webserver>
раздел вашего файла web.config:
<httpCompression>
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" />
..
Ричард