起因:业务想要一个固定二维码来每周扫码跳转到不同的页面上去,我用JS写了个跳转,却发现被缓存了,虽然被具体被缓存多久不清楚,但是被缓存了很不爽,不符合业务实时更改这个二维码跳转页面的需求。
经过:既然页面被缓存了,那就在页面顶部meta里写明不要缓存呗,head标签里加入下面代码:
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0">结果你懂的,无效!很奇怪,“window.location.href="https://XXXXX";”这段代码只要出现在页面里,这个跳转就会被缓存,如果去除这段的话,像alert和其它页面html都不会被缓存。
解决:正当我犯愁的时候,想起以前解决JS缓存的一个方法,就是在引用URL后面加随机数。这给了我个启发,既然浏览器缓存了这个页面的跳转代码,那我就再做一次页面跳转,并加上这个参数,那样载入的这个跳转页面总不会再被缓存了吧。经测试可以用。
PS:虽然html的文档上都写着meta里设置可以防止页面缓存,但是这只是个标准,具体怎么实现还是要看浏览器自己的,我使用的是chrome浏览器,估计它对“window.location.href="https://XXXXX";”有做过优化,只要这条语句出现就会缓存页面(本人猜测)。如果对这个问题有更多了解的人,欢迎交流。
------------------2015-12-07--------------
发现chrome浏览器,针对https有做过缓存处理,只要使用https打开过一次,在没有清缓存之前就会一直使用原页面,估计是出于效率考虑