在做前端开发时,明明我们改了引用JS的代码,替换了图片,但是重新加载后,效果还是原来的。经过排查,发现是浏览器缓存导致的。起初,我想的办法是清除浏览器缓存。但是这个比较费劲。后来无意中发现,在URL后面追加时间戳或者随机数,这样浏览器每次都会以为是一个新的请求,而不会去读取缓存。具体实现是在原先链接后面加上下面的代码:
1、添加时间:
?new Date().getTime();
2、添加随机数:
?number=Math.random();
两者二选一,添加在JS部分,具体实现参照下面的代码,HTML部分:
<i><img height="20" id="headerImg" src="" /></i>
JS动态赋值:
$(function () {
$("#headerImg").attr("src","./static/login/user.png?number="+ Math.random());
});
如果在HTML,只能写直接赋值,不宜生成随机数,有改动时换下v后面的值,如下:
<link href="../static/css/style.css" th:href="@{/css/style.css?v=1.1}" rel="stylesheet"/>