2011-08-01 14 views
5

Tôi có IIS 7.5 với tính năng nén tĩnh và động được bật. Dường như nó hoạt động tốt cho các tệp động, nhưng đối với các tệp tĩnh, nó hoạt động không bình thường, thường gửi một tiêu đề http "Content-Encoding: gzip" khi nội dung không được nén. Điều này làm cho các trình duyệt cố gắng giải nén, ném một lỗi số ma thuật không hợp lệ. Dưới đây là cấu hình của tôi:Nén GZip trong IIS7 không hoạt động, nhưng tiêu đề mã hóa nội dung được đặt thành gzip

<httpCompression dynamicCompressionDisableCpuUsage="95" dynamicCompressionEnableCpuUsage="70" > 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="application/json" enabled="true" /> 
<add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
<add mimeType="text/*" enabled="true" /> 
<add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
<add mimeType="*/*" enabled="false" /> 
    </staticTypes> 

Tôi nghĩ một số mô-đun http được giải nén các nội dung ở đâu đó xuống đường ống, nhưng không ai trong số họ có vẻ khả nghi. Bất kỳ ý tưởng?

Trả lời

2

Hãy thử bật tính năng nén động trước khi bộ nhớ cache bị tắt theo mặc định.

<urlCompression dynamicCompressionBeforeCache="true" doDynamicCompression="true" doStaticCompression="true" /> 
+1

Cảm ơn bạn đã đề xuất. Tôi đã thử đặt dòng đó dưới nhưng nó không tạo ra sự khác biệt. Bất kỳ ý tưởng? – sboisse

0

Hãy cho tôi một thời gian để tìm hiểu điều này. Đặt thuộc tính frequentHitThreshold thành 1 trên nút system.webServer/serverRuntime trong tệp applicationHost.config nên thực hiện thủ thuật, như được ghi tại http://www.iis.net/ConfigReference/system.webServer/serverRuntime.

Bạn có thể làm điều này bằng cách thực hiện các lệnh sau đây như một quản trị viên:

%windir%\system32\inetsrv\appcmd set config /section:serverRuntime /frequentHitThreshold:1 /commit:apphost 

Một lời cảnh báo - sự "thường xuyên hit" khái niệm dường như không cụ thể để nén. Tôi không biết liệu có những hậu quả khác như là kết quả của việc thiết lập điều này không!

2

Tôi đã phát hiện ra trong các nghiên cứu của mình rằng việc sử dụng HttpContext.RewritePath() trên một tệp tĩnh gây ra sự cố này.

+0

Thật kỳ lạ nhưng tôi thấy điều này cũng đúng, ít nhất là trên một trong các máy chủ QA của tôi (W2K8/IIS 7.5). – rsbarro