2010-06-16 39 views

Trả lời

68

Để vô hiệu hóa bộ nhớ cache của trình duyệt cho các trang JSP, tạo ra một Filter được ánh xạ vào một url-pattern của *.jsp và làm cơ bản sau đây trong các phương pháp doFilter():

HttpServletResponse httpResponse = (HttpServletResponse) response; 
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1 
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0 
httpResponse.setDateHeader("Expires", 0); // Proxies. 

Bằng cách này bạn không cần để sao chép nó trên tất cả các trang JSP và làm lộn xộn chúng với tập lệnh.

Để kích hoạt bộ nhớ cache của trình duyệt cho các thành phần tĩnh như CSS và JS, đưa tất cả chúng trong một thư mục phổ biến như /static hoặc /resources và tạo ra một Filter được ánh xạ vào một url-pattern của /static/* hoặc /resources/* và làm cơ bản sau đây trong các phương pháp doFilter() :

httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future. 

Xem thêm:

+6

+ ∞ nếu tôi có thể cho liên kết bài đăng trên blog của bạn. Nó đã cứu tôi SO. NHIỀU. GIỜ. –

+0

@Bears: Bạn được chào đón :) – BalusC

+2

cảm ơn nó đã giúp tôi rất nhiều. Nhưng không có lỗi trên dòng thứ hai? Cần phải có: httpResponse.setHeader ("Cache-Control", "no-cache, no-store, must-revalidate"); – Christian

8
<% 
    response.setHeader("Cache-Control", "no-cache"); 
    response.setDateHeader("Expires", 0); 
%> 
+0

OP cho biết anh ấy muốn trang hết hạn trong tương lai, nhưng câu trả lời này cho anh ta điều ngược lại. –

1

container Servlet như Tomcat đi kèm với một bộ lọc được xác định trước. Xem ví dụ Expires Filter. Nó có thể được dễ dàng hơn để sử dụng hiện có hơn để tạo ra bộ lọc tương tự của riêng bạn.

2
<% 
    response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1 
    response.setHeader("Pragma", "no-cache"); //HTTP 1.0 
    response.setDateHeader("Expires", 0); //prevents caching at the proxy server 
%> 
+0

Có nên sử dụng cả "Cache-Control" và "Pragma" hay chỉ một tùy chọn trong servlet Container? –

+0

OP nói rằng anh ta muốn một trang hết hạn trong tương lai xa, nhưng câu trả lời này cho anh ta điều ngược lại. –

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