2009-08-06 46 views
5

Trang web của tôi bị nén gzip và không tải đúng cách trong IE. Nó hoạt động tốt trong FF/Chrome, nhưng trong IE, điều duy nhất bật lên là một hộp yêu cầu tải xuống tệp .gz chứa tài liệu html cho trang.Tại sao nén gzip với Internet Explorer không hoạt động?

Điều này có bình thường không? Tôi có phải tắt gzip không?

+1

Những phiên bản của Internet Explorer? – Mez

+0

IE 7. chưa được thử nghiệm trên 6 hoặc 8 chưa – chris

Trả lời

16

Bạn có gửi tiêu đề chính xác không?

Bạn cần phải gửi header

Content-Encoding: gzip 

cho IE để hiểu rằng nó được gzip (Firefox, et al có đủ thông minh để phát hiện điều này tự động - mặc dù họ không nên!)

Trong PHP, bạn có thể thực hiện việc này bằng cách sử dụng: -

header('Content-Encoding: gzip'); 
+3

tiêu đề ("Content-Encoding: gzip"); – danamlund

+0

cảm ơn những người hữu ích – chris

+7

"Phát hiện điều này tự động" không hợp pháp. – EricLaw

0

Tôi đã gặp sự cố khi sử dụng gzip với Internet Explorer trên trang có flash trên đó. Nếu trang của bạn có flash thì đây có thể là lý do. Tôi không nhớ nguyên nhân và tại thời điểm chúng tôi phát hiện ra nó đã gây ra sự cố trên một trang web trực tiếp, vì vậy chúng tôi vừa vô hiệu hóa gzip cho Internet Explorer để giải quyết vấn đề này.

+1

Đây là nhận xét hợp lệ, IE6 nếu nó thấy tiêu đề "Vary" cùng với Nội dung mã hóa dưới dạng gzip, nó không thể truy xuất phản hồi hoàn chỉnh. – shivaspk

7

Một điều cần thêm - bạn nên tắt nén gzip cho IE6 trước SP2. Trước SP2, IE6 không phải lúc nào cũng đọc và cache nội dung được nén đúng cách và bạn kết thúc với mã bị xé.

Bạn có thể xác định cài đặt IE6 SP2 bằng cách tìm kiếm "SV1" trong chuỗi tác nhân người dùng.

0

Tiêu đề HTTP là vấn đề. Nếu bạn có tiêu đề gzip cùng với một trong các cách sau:

  • Vary
  • Chuyển Encoding: chunked

một hoặc cả hai cần phải được loại bỏ.

Sự cố này có nhiều khả năng xảy ra trên máy tính đang chạy Apache HTTP Server vì Apache HTTP Server có thể sử dụng mã hóa chunked trên bất kỳ loại tệp nào. Điều này bao gồm các tệp tĩnh như tệp JavaScript hoặc tệp .gif. Khi sự cố được mô tả trong bài viết này xảy ra, nội dung được lưu trữ trong bộ nhớ cache của Internet Explorer có thể bị cắt bớt hoặc bị hỏng.

Đối với XML, XHTML, và các tập tin XSLT, ngăn chặn phân tích cú pháp dưới dạng văn bản/html hoặc text/xsl:

RewriteCond %{HTTP_ACCEPT} text\/html [OR] 
    RewriteCond %{HTTP_ACCEPT} text\/xsl [OR] 
    RewriteCond %{HTTP_ACCEPT} gif|jpeg|png$ 
    ReWriteRule .*\.(xsl|xslt)$ - [F] 

Và thêm application/xml như một loại nội dung bản đồ:

AddType application/xml .xsl 

Tài liệu tham khảo

Các vấn đề liên quan