Причиною того, що ваш файл 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" />
..
Річард