问题是这样的:
目前在做微信页面,由于缓存很厉害,所以需要给index.html主页面的url添加随机数,就是说当每刷新一次页面就请求一个不同的页面,
window.location.href=window.location.href+"?v="+new Date().getTime();
如果这样来做,页面会不停的跳转(因为刷新一次改一下 url,导致了再一次刷新,陷入了一直刷新的死循环),
所以,我这样来判断“?”是否存在
if(window.location.href.indexOf("?")==-1) {
window.location.href=window.location.href+"?v="+new Date().getTime();
}
但是,这样又只能跳转一次?
如何让每刷新一次,跳转一个不同的页面,就说后面随机数要变化,而又不陷入死循环呢?
我想出两种方案,
1、服务器端返回文件的时候,设置响应头,
貌似是这样,告诉浏览器不要缓存;
2、前端控制,核心是,如何区分代码里修改 url 导致的刷新和用户的刷新,代码:
原理:
所以,onbeforeunload,onunload 都无法来区分,我想到的可以区分的就是,用户的操作
我觉得比较困难,尤其是地址栏回车按钮和地址栏旁的刷新;所以想了另外一个妥协的办法:
页面每次加载,都去 localStorage 里获取上次加载的时间 previousAccessTime,和当前时间一减,得出 interval ,假设跟 3秒 比较;
后两点是缺点,当然可以通过其他方式去优化,比如,