如何停用JSP页面内的缓存

时间:2020-03-06 15:01:20  来源:igfitidea点击:

我知道有一个HTTP响应标头指令来禁用页面缓存:

Cache-Control:no-cache

我可以通过"手动"修改标题:

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

但是,是否有一种"不错"的方法可以使JSP解释器在服务器响应中返回此标头行?

(我检查了<%@ page ...%>指令。似乎没有类似的东西。)

解决方案

如果我们使用的是servlet,那么我认为我们在问题中发布的内容将是正确的方法。我不知道在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>

我们必须将响应标头放入&lt;jsp:root />中。另外,我反而建议它从servlet而不是JSP页面发送此消息。

IIRC某些浏览器在某些情况下可能会忽略缓存控制设置。 "安全"的解决方法是始终获取具有新查询字符串变量(如时间)的页面(甚至是AJAX块)。

还添加

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

到标题并尝试一下。