Question

Comment ajouter un Expires ou un en-tête de Cache-Control en JSP? Je veux ajouter une date d'expiration de grande avenir dans une page pour inclure mes composants statiques tels que des images, CSS et JavaScript fichiers.

Était-ce utile?

La solution

Pour désactiver le cache du navigateur pour les pages JSP, créez un Filter qui est mis en correspondance 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 ne avez pas besoin de ce copypaste sur toutes les pages JSP et les encombrer avec scriptlets .

Pour activer le cache du navigateur pour les composants statiques comme CSS et JS, les mettre tous dans un dossier commun comme /static ou /resources et créer une Filter qui est mis en correspondance sur un url-pattern de /static/* ou /resources/* et fait essentiellement ce qui suit dans la méthode doFilter():

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

Voir aussi:

Autres conseils

<%
    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
%>

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top