Причина, по которой он сжимает только ваш файл 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" />
..
Richard