【JQuery】使jsp不走浏览器缓存,首次进页面进行刷新

当从B页面返回A页面时,A页面仍显示旧数据。本文介绍了三种使用JQuery来解决这个问题的方法,包括针对IOS的onpageshow事件处理、在B页面监听返回按钮并重新请求以及在文件中声明不缓存。每种方法都有其优缺点,例如防止无限循环和确保页面实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在B页面在进行返回A页面操作的时候,A页面还有原来的数据

以下几种可解决这种问题,各有利有弊

第一种:

IOS 处理方式:在jsp页面<head></head>加上强制刷新
onpageshow :是只针对于IOS的事件

<script type="text/javascript">
	window.onpageshow = function(event) {
		if (event.persisted) {
			window.location.reload()
		}
	};
</script>

在A页面进行判断是否首次进入该页面,是 就在路径中拼接字符,再进行刷新操作。
如果不根据字符进行判断而直接调用reload()方法,会导致该页面一直不停的刷新。
注意:body 中有onbeforeunload事件(在页面关闭之前触发,但是IOS系统并没有该事件)
此方法是为了将拼接过的url进行替换为原始url
replaceState() :替换当前的历史记录

<body onbeforeunload="unload()">
	<script>
			$(function(){
				<%--是否首次进入--%>
				if(location.href.indexOf("#reloaded")==-1){
					location.href=location.href+"#reloaded";
					location.reload();
				}
			});
			function unload() {
				var state = {
					title: "申请VIP会员",
					url: "<%=basePath%>/proxy/managementCenter.do"
				};
				window.history.replaceState(state, "申请VIP会员", "<%=basePath%>/proxy/managementCenter.do");
			}
		</script>
	</body>
第二种:

在B页面对返回按钮进行监听操作,使每次返回操作都进行一次请求
弊端:因为每次请求都是一个新的页面,虽然没有走缓存 但是在A页面点击返回操作的时候又会切换到B页面,进入一个死循环(如果对业务的返回并没有那么复杂,也可以在A页面也进行监听)

<script>
    $(function(){
        pushHistory();
        window.addEventListener("popstate", function(e) {
            if(${photo != null}) {
                window.history.go(-1);
        }, false);
        function pushHistory() {
            var state = {
                title: "title",
                url: "#"
            };
            window.history.pushState(state, "title", "#");
        }
    });
</script>
第三种:

在文件中进行声明此文件不进行缓存处理(这种方式我加上以后并没有任何作用)

  • html中:
<meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<meta HTTP-EQUIV="expires" CONTENT="0">
  • jsp中
<%       
  response.setHeader("Cache-Control","no-store");       
  response.setHeader("Pragrma","no-cache");       
  response.setDateHeader("Expires",0);       
  %> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值