0

适用于智能手机、平板电脑和 Web 浏览器的 HTTP 缓存控制标头。当我在我的网站的移动版本上工作时,我遇到了一个问题。我的目标是告诉浏览器永远不要缓存我的网页。我希望每个浏览器都这样做——Chrome、Firefox、Internet Explorer、Safari、iPhone 的浏览器、Android 手机的浏览器等。

我使用了以下 HTTP 缓存控制代码 jsp,我使用 <%@include file="myjsp.jsp"%> 在其他 jsps 中包含以下 jsp 文件。它适用于网络浏览器,但不适用于移动浏览器。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
contentType="text/html;charset=UTF-8" isELIgnored = "false" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@taglib prefix="c2" uri="http://java.sun.com/jstl/core_rt"%>
<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
<%@ taglib prefix="sec"
uri="http://www.springframework.org/security/tags"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

 <%
response.setHeader("Cache-Control",
        "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Cache-Control",
        "post-check=0, pre-check=0', false");

response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

 %>

这些标题有什么问题?

您是否有同样的问题,您的 HTTP 缓存控制标头在某些浏览器上工作而不是在其他浏览器上工作?

移动浏览器和桌面浏览器之间是否存在任何特定差异。

4

3 回答 3

0

创建一个会话属性,让我们说“有效”,并在登录凭据匹配后使用 jsp 中除 null 以外的任何值对其进行初始化。现在使用以下代码创建一个 verify.jsp:

<%
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
if(session.getAttribute("valid")==null)
{
    out.println("<script>parent.location.href='login.jsp'</script>");
}
%>

现在只需在每个 jsp 页面上包含这个 jsp 文件并完成。不要忘记写“session.invalidate();” 在注销.jsp

希望它会工作..!!!

于 2014-08-28T09:15:00.153 回答
0

尝试将这些标头设置为html元标记。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
于 2013-09-19T05:10:17.550 回答
0

首先,scriptlets永远JSP不建议保留。scriptlets从您的所有内容中删除JSP并尝试使用JSTL或尽可能使用 struts 标签(优先使用JSTL标签而不是任何其他框架,如 struts 标签)。

第二件事是在您的 JSP 上保留标签以使用以下元标签设置不缓存:

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

有关更多信息,请查看此处此处

如果仍然不能解决您的问题,请告诉我。

于 2013-09-19T05:41:36.243 回答