2009-06-12 36 views
5

Tôi đang sử dụng một bộ lọc servlet đơn giản mà buộc trình duyệt để bỏ qua bộ nhớ đệm cho một số tài nguyên máy chủ:Cách tốt nhất để vô hiệu hóa bộ nhớ đệm client

 
    Cache-Control: private 
    Pragma: 

này hoạt động tốt trong Internet Explorer nhưng nó không hoạt động tốt với Firefox 3.0.10. Tôi đã kết thúc để viết mã này:

 
    Cache-Control: no-cache, no-store, must-revalidate, max-age=-1 
    Pragma: no-cache, no-store 
    Expires: -1 // -1 is the unix time, the client receives a date in 1969 :) 
    Last-Modified: -1 // ditto 

lực lượng này firefox vào bộ nhớ cache không có gì. Còn các trình duyệt khác thì sao? Điều gì về thực tiễn tốt nhất về không có tiêu đề bộ nhớ đệm hoạt động trên các trình duyệt chính?

Trả lời

7

Drupal 6 thực hiện điều này (trong đó hoạt động ở mọi trình duyệt nổi tiếng của tôi):

  • Expires: Sun, 19 tháng 11 1978 05:00:00 GMT
  • Last Modified: Fri , ngày 12 tháng 6 năm 2009 08:01:46 GMT (ngày thay đổi thực tế)
  • Cache-Control: cửa hàng, no-cache,-phải xác nhận lại, bưu điện kiểm tra lại = 0, trước kiểm tra = 0

Không có tiêu đề pragma trong trường hợp này. Tôi không chắc chắn lý do tại sao ví dụ của bạn không hoạt động, nó có thể là các timestamps tiêu cực, điều này hoạt động trên ~ 250.000 trang web Drupal :)

+0

cảm ơn bạn đã chia sẻ thông tin này – dfa

1

giải pháp ban đầu của bạn không làm việc đáng tin cậy bởi vì:

  • Cache control là được sử dụng để chỉ định các chỉ thị PHẢI tuân theo tất cả các cơ chế lưu trữ đệm dọc theo chuỗi yêu cầu/phản hồi. Cơ chế duy nhất mà tôi biết là proxy, vì vậy các tác nhân người dùng không bị ràng buộc bởi nó.
  • Tiêu đề Pragma: không bao gồm giá trị. Tôi không chắc nó có hợp pháp hay không - về mặt giao thức HTTP.
+0

Pragma không có giá trị được xử lý tốt bởi IE :) – dfa

+0

Có, theo IE. Bạn đặc biệt yêu cầu các trình duyệt khác. Ngoài ra, tôi nói rằng giải pháp không hoạt động đáng tin cậy, không phải là nó không hoạt động. –

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