web-dev-qa-db-fra.com

Ajouter un en-tête Expires ou Cache-Control dans JSP

Comment ajouter un Expires ou un Cache-Control en-tête dans JSP? Je veux ajouter une date d'expiration très lointaine dans une page d'inclusion pour mes composants statiques tels que les images, les fichiers CSS et JavaScript.

29
Sam

Pour désactiver le cache du navigateur pour les pages JSP, créez un Filter qui est mappé sur un url-pattern De *.jsp Et fait essentiellement ce qui suit dans la méthode 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.

De cette façon, vous n'avez pas besoin de copier-coller cela sur toutes les pages JSP et de les encombrer avec scriptlets.

Pour activer le cache du navigateur pour les composants statiques comme CSS et JS, placez-les tous dans un dossier commun comme /static Ou /resources Et créez un Filter qui est mappé sur un url-pattern De /static/* Ou /resources/* Et effectue essentiellement les opérations suivantes dans la méthode doFilter():

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

Voir aussi:

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

Les conteneurs de servlets comme Tomcat sont livrés avec un ensemble de filtres prédéfinis. Voir par exemple Expires Filter . Il peut être plus facile d'utiliser un filtre existant que de créer votre propre filtre similaire.

1
mp31415