Làm cách nào để thêm một tiêu đề Expires
hoặc Cache-Control
vào JSP? Tôi muốn thêm một ngày hết hạn trong tương lai trong một trang bao gồm cho các thành phần tĩnh của tôi như các tệp hình ảnh, CSS và JavaScript.Thêm tiêu đề Hết hạn hoặc Bộ nhớ cache-Kiểm soát trong JSP
Trả lời
Để 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:
<%
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 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. –
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.
<%
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
%>
Có nên sử dụng cả "Cache-Control" và "Pragma" hay chỉ một tùy chọn trong servlet Container? –
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. –
- 1. Kiểm soát hết hạn bộ nhớ cache
- 2. Tiêu đề HTTP: Kiểm soát bộ nhớ cache đủ hay tôi vẫn cần hết hạn?
- 3. iis chỉ Thêm hết hạn tiêu đề vào hình ảnh
- 4. Hết hạn chuỗi trong tiêu đề cookie
- 5. Hết hạn tiêu đề khi thử nghiệm trong Chrome
- 6. Hết hạn tiêu đề trên AppHarbor
- 7. Hết hạn bộ nhớ bảng Azure
- 8. Hết hạn bộ nhớ cache NHibernate
- 9. Đặt hết hạn bộ nhớ cache?
- 10. Tiêu đề HTTP "Hết hạn" không hoạt động trong Chrome
- 11. java hết vấn đề bộ nhớ
- 12. Cách chỉ định tiêu đề hết hạn HTTP? (ASP.NET MVC + IIS)
- 13. Mathematica hết bộ nhớ
- 14. Các trường tiêu đề yêu cầu hết hạn, bộ nhớ cache kiểm soát và pragma HTTP của tôi sẽ được đặt thành?
- 15. cache Hết Hạn kiểm soát với cuối Modification
- 16. Google App Engine - tiêu đề [] và tiêu đề.add_header() để kiểm soát bộ nhớ cache
- 17. Đặt tiêu đề kiểm soát bộ nhớ cache HTTP trong dịch vụ WCF
- 18. Buộc tất cả bộ nhớ cache ASP.NET hết hạn
- 19. Cách thêm tiêu đề hồi đáp Hết hạn vào phản hồi Hành động WebAPI?
- 20. Giá trị tối đa cho tiêu đề kiểm soát bộ nhớ cache trong HTTP
- 21. Thời gian hết hạn ghi nhớ
- 22. Tiêu đề hết hạn trong tương lai xa và HTTP 304
- 23. LRU được ghi nhớ và hết hạn
- 24. mod_expires gửi tiêu đề Bộ nhớ cache kiểm soát cho 3 ## mã trạng thái
- 25. Điều kiện đặt tiêu đề bộ nhớ cache trong apache
- 26. Làm cách nào để đặt tiêu đề Bộ nhớ cache-Kiểm soát cho mọi phản hồi trong Catalyst?
- 27. Đầu đề kiểm soát bộ nhớ cache trên đám mây bị thiếu
- 28. Tiêu đề HTTP: Kiểm soát bộ nhớ cache và cơ chế lịch sử
- 29. HTTP 304 Not Modified-response có chứa tiêu đề kiểm soát bộ nhớ cache không?
- 30. Tiêu đề kiểm soát bộ nhớ cache được sửa đổi theo phiên PHP?
+ ∞ 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Ờ. –
@Bears: Bạn được chào đón :) – BalusC
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