Je tiens à nous assurer que la réponse de ma servëte n'est jamais mise en cache par le Broswer, de sorte que même si deux demandes identiques sont faites (une nanoseconde à part), le serveur est toujours contacté. Est-ce la bonne façon d'y parvenir:
class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("Cache-Control", "no-cache");
}
}
Merci, don
Non, ce n'est pas la bonne façon. Voici la bonne façon:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
Vous verrez probablement quelqu'un d'autre suggérant d'autres entrées/attributs, mais ceux-ci sont complètement non pertinents lorsque au moins ce qui précède est mentionné.
N'oubliez pas d'effacer le cache de votre navigateur avant de tester après le changement.
Nous utilisons:
// HTTP 1.1
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
// HTTP 1.0
response.setHeader("Pragma", "no-cache");
Selon Microsoft, ces en-têtes sont nécessaires pour IE:
Exemple:
Pragma: no-cache
Cache-Control: no-cache
Expires: -1