我知道有一个 HTTP 响应标头指令可以禁用页面缓存:
Cache-Control:no-cache
我可以通过“手”修改标题:
<%response.addHeader("Cache-Control","no-cache");%>
但是有没有一种“好”的方法可以让 JSP 解释器在服务器响应中返回这个标题行?
(我检查了 <%@page ...%> 指令。似乎没有这样的东西。)
我知道有一个 HTTP 响应标头指令可以禁用页面缓存:
Cache-Control:no-cache
我可以通过“手”修改标题:
<%response.addHeader("Cache-Control","no-cache");%>
但是有没有一种“好”的方法可以让 JSP 解释器在服务器响应中返回这个标题行?
(我检查了 <%@page ...%> 指令。似乎没有这样的东西。)
还添加
response.addHeader("过期","-1"); response.addHeader("Pragma","no-cache");
到你的头球并试一试。
如果您使用的是 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>
您必须将响应标头放入<jsp:root />
. 另外,我建议它从您的 servlet 而不是 JSP 页面发送它。
IIRC 某些浏览器可能会在某些情况下忽略缓存控制设置。解决此问题的“安全”解决方法是始终获取带有新查询字符串变量(例如时间)的页面(甚至是 AJAX 块)。