Lý do nó chỉ nén tệp ASPX của bạn là mã bạn đã viết chỉ được nhúng trong tệp ASPX. Tệp ASPX là một yêu cầu riêng biệt với bất kỳ nội dung được liên kết nào mà nó chứa. Vì vậy, nếu bạn có một trang ASPX chứa:
<img src="www.example.com\exampleimg.jpg" alt="example" />
Điều này sẽ lên tới 2 yêu cầu (ngoài tra cứu DNS) từ trình duyệt của bạn tới các tài nguyên:
- cho trang aspx và
- cho hình ảnh được chứa bởi trang aspx.
Mỗi yêu cầu có hơi phản hồi riêng. Mã bạn đã đăng chỉ được đính kèm vào luồng phản hồi ASPX, đó là lý do tại sao chỉ trang ASPX của bạn đang được nén. Các dòng 1 & 2 của mã đã đăng của bạn về cơ bản đang tiếp quản luồng phản hồi bình thường của trang và chèn một số mã "người trung gian" mà trong trường hợp này là ăn và nén luồng đầu ra bình thường bằng một luồng GZip và thay vào đó gửi luồng đó xuống dây.
Dòng 3 & 4 đang thiết lập tiêu đề phản hồi. Tất cả các yêu cầu và phản hồi http đều có tiêu đề được gửi trước nội dung. Chúng thiết lập yêu cầu / phản hồi để máy chủ và máy khách biết những gì đang được gửi và cách thức.
Trong trường hợp này, Dòng 3 thông báo cho trình duyệt máy khách rằng luồng phản hồi được nén qua gzip và do đó cần được giải nén bởi trình duyệt khách trước khi hiển thị.
Và Dòng 4 chỉ đơn giản là bật tiêu đề Chấp nhận-Mã hóa của phản hồi. Nếu không thì điều này sẽ không có trong phản hồi.
Có những mô-đun có thể cắm được mà bạn có thể ghi / lấy cho phép bạn nén nhiều loại MIME khác như * .js và * .css nhưng tốt hơn hết bạn chỉ nên sử dụng chức năng nén tích hợp của IIS.
Bạn chưa cho biết bạn đang sử dụng phiên bản nào của IIS nhưng nếu đó là IIS 7.0, bạn sẽ phải bao gồm những thứ như sau vào <system.webserver>
phần của tệp web.config của bạn:
<httpCompression>
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" />
..
Richard