wake-up-neo.com

Fügen Sie in JSP einen Expires- oder Cache-Control-Header hinzu

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.

29
Sam

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:

71
BalusC
<%
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
%>
10
Darin Dimitrov
<%
    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
%>
2
User1985

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.

1
mp31415