Wie fügt man ein Expires
oder ein Cache-Control
Header in JSP? Ich möchte ein Ablaufdatum für die Zukunft in eine Include-Seite für meine statischen Komponenten wie Bilder, CSS- und JavaScript-Dateien einfügen.
Um den Browser-Cache für JSP-Seiten zu deaktivieren, erstellen Sie ein Filter
, das auf einem url-pattern
Von *.jsp
Abgebildet ist und in der doFilter()
-Methode im Grunde Folgendes ausführt:
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.
Auf diese Weise müssen Sie nicht alle JSP-Seiten kopieren und mit scriptlets überladen.
Um den Browser-Cache für statische Komponenten wie CSS und JS zu aktivieren, legen Sie sie alle in einem gemeinsamen Ordner wie /static
Oder /resources
Ab und erstellen Sie ein Filter
, das auf ein url-pattern
Von /static/*
Oder /resources/*
Und führt in der doFilter()
-Methode grundsätzlich Folgendes aus:
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
Siehe auch:
<%
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<%
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
%>
Servlet-Container wie Tomcat werden mit einer Reihe vordefinierter Filter geliefert. Siehe zum Beispiel Expires Filter . Es ist möglicherweise einfacher, einen vorhandenen Filter zu verwenden, als einen eigenen ähnlichen Filter zu erstellen.