Question

I understand there is a HTTP response header directive to disable page caching:

Cache-Control:no-cache

I can modify the header by "hand":

 <%response.addHeader("Cache-Control","no-cache");%>

But is there a "nice" way to make the JSP interpreter return this header line in the server response?

(I checked the <%@page ...%> directive. It seems there is nothing like that.)

Was it helpful?

Solution

Also add

response.addHeader("Expires","-1");
response.addHeader("Pragma","no-cache");

to your headers and give that a shot.

OTHER TIPS

If you were using a servlet, then I believe what you posted in the question would be the correct approach. I'm not aware of any way to do this in the 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>

You must put the response header inside <jsp:root />. Also, I would instead recommend it sending this from your servlet instead of JSP page.

IIRC some browsers may ignore the cache control settings in some contexts. The 'safe' workaround for this was to always get a page (even an AJAX chunk) with a new query string variable (like the time.)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top