场景:
用户购买商品,支付界面,有倒计时。点击去支付后再返回,倒计时的时间还是停留在第一次刷新页面时的时间。
我讲浏览器的disable cache选中后再次进行相同操作的时候,倒计时就正常了。
所以前端怎么禁止在返回的时候禁止读取缓存?或者是禁止某些文件读取缓存?
场景:
用户购买商品,支付界面,有倒计时。点击去支付后再返回,倒计时的时间还是停留在第一次刷新页面时的时间。
我讲浏览器的disable cache选中后再次进行相同操作的时候,倒计时就正常了。
所以前端怎么禁止在返回的时候禁止读取缓存?或者是禁止某些文件读取缓存?
一个简单的办法是在URL尾部添加一个随机字符串,最常用的是加上当前日期。比如
url = "www.baidu.com?city=hangzhou&random=" + new Date().getTime();
这个随机数参数的唯一作用就是让浏览器误以为请求的是一个新链接,这样浏览器就不会去读取缓存里的内容。其实请求的是同一个资源,但由于加了一个随机数参数,浏览器会认为请求的是不同的资源,那么浏览器就不会读取缓存中的内容,而是直接访问服务器。但是有一个弊端,因为缓存可以减少对服务器的直接访问,减少服务器的压力。浏览器不读取缓存里的内容之后,每次都会访问服务器,就会增加服务器的压力。
上述大佬方案很赞,
补充个人经验:
1.使用js框架的情况 - 利用生命周期/路由,销毁该组件/页面。以达到每次访问该url默认重新加载;
2.未使用js框架 - 将该js采用闭包方式重写,即每次访问自调用(重置)/倒计时变量不被记录;
3.手动重置
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答867 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
用post/加一个没用的随机数或时间戳参数