Come disattivare la memorizzazione nella cache all'interno di una pagina jsp
-
03-07-2019 - |
Domanda
Comprendo che esiste una direttiva dell'intestazione della risposta HTTP per disabilitare la memorizzazione nella cache della pagina:
Cache-Control:no-cache
Posso modificare l'intestazione con " mano " ;:
<%response.addHeader("Cache-Control","no-cache");%>
Ma c'è un " bello " modo per far sì che l'interprete JSP restituisca questa riga di intestazione nella risposta del server?
(Ho controllato la direttiva <% @ page ...% > Sembra che non ci sia nulla del genere.)
Soluzione
Aggiungi anche
response.addHeader("Expires","-1"); response.addHeader("Pragma","no-cache");
alle tue intestazioni e provaci.
Altri suggerimenti
Se stavi usando un servlet, credo che ciò che hai pubblicato nella domanda sarebbe l'approccio corretto. Non sono a conoscenza di alcun modo per farlo nel JSP.
<?xml version="1.0"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
<jsp:scriptlet><![CDATA[
response.setHeader("Cache-Control", "no-cache");
]]></jsp:scriptlet>
</jsp:root>
Devi inserire l'intestazione della risposta in <jsp:root />
. Inoltre, raccomanderei invece di inviarlo dal servlet anziché dalla pagina JSP.
IIRC alcuni browser potrebbero ignorare le impostazioni di controllo della cache in alcuni contesti. La soluzione "sicura" per questo era quella di ottenere sempre una pagina (anche un pezzo AJAX) con una nuova variabile stringa di query (come il tempo.)