浏览器返回时怎么不读取缓存?

场景:
用户购买商品,支付界面,有倒计时。点击去支付后再返回,倒计时的时间还是停留在第一次刷新页面时的时间。

我讲浏览器的disable cache选中后再次进行相同操作的时候,倒计时就正常了。

所以前端怎么禁止在返回的时候禁止读取缓存?或者是禁止某些文件读取缓存?

阅读 3.6k
3 个回答

用post/加一个没用的随机数或时间戳参数

一个简单的办法是在URL尾部添加一个随机字符串,最常用的是加上当前日期。比如
url = "www.baidu.com?city=hangzhou&random=" + new Date().getTime();
这个随机数参数的唯一作用就是让浏览器误以为请求的是一个新链接,这样浏览器就不会去读取缓存里的内容。其实请求的是同一个资源,但由于加了一个随机数参数,浏览器会认为请求的是不同的资源,那么浏览器就不会读取缓存中的内容,而是直接访问服务器。但是有一个弊端,因为缓存可以减少对服务器的直接访问,减少服务器的压力。浏览器不读取缓存里的内容之后,每次都会访问服务器,就会增加服务器的压力。

上述大佬方案很赞,
补充个人经验:
1.使用js框架的情况 - 利用生命周期/路由,销毁该组件/页面。以达到每次访问该url默认重新加载;
2.未使用js框架 - 将该js采用闭包方式重写,即每次访问自调用(重置)/倒计时变量不被记录;
3.手动重置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题