我目前正在尝试创建一个简单的测试,以通过渲染图像来测试客户端PC的速度。问题出在诸如Safari和Chrome图像之类的浏览器上,它们以某种方式保存,以便快速重新加载。例如,当使用以下代码时
var speed = document.getElementById('speed');
var startTime = new Date().getTime();
var img = new Image();
img.onload = function() {
var stopTime = new Date().getTime();
var loadtime = Math.round((stopTime - startTime) / 100);
}
img.src = "testImage.jpg";
变量loadtime
首先是8
,刷新后是0
。我的猜测是Safari保存图像以立即加载。在Chrome上,除非我进行硬重装,否则都是同样的问题。我尝试放入这些meta
标签,但没有运气。
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
我也尝试过
location.reload(true);
如建议的here所示,但似乎并没有解决问题。
是否可以在未经客户同意或选择的情况下强行进行重装?还是某种形式的安全侵权?
答案 0 :(得分:3)
设置元标记并重新加载HTML页面不会影响图像的缓存。例如,如果要避免缓存图像,请尝试每次附加一个随机查询参数。
img.src = "testImage.jpg?q=" + Math.random().toString(16).slice(2);
答案 1 :(得分:2)
您可以在网址末尾添加一个无害的查询参数,以中断浏览器的缓存:
img.src="testImage.jpg?noop=<incrementing_number_here>"