强制硬重载
Force Hard Reload
我目前正在尝试创建一个简单的测试,通过渲染图像来测试客户端 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,但它似乎并不能解决问题。
是否可以在未经客户同意或未选择的情况下强制硬重新加载?还是某种安全侵权行为?
您可以在 url 的末尾添加一个无害的查询参数来破坏浏览器的缓存:
img.src="testImage.jpg?noop=<incrementing_number_here>"
设置元标记和重新加载HTML页面不会影响图像的缓存。例如,如果您想避免缓存图像,请尝试每次都附加一个随机查询参数。
img.src = "testImage.jpg?q=" + Math.random().toString(16).slice(2);
我目前正在尝试创建一个简单的测试,通过渲染图像来测试客户端 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,但它似乎并不能解决问题。
是否可以在未经客户同意或未选择的情况下强制硬重新加载?还是某种安全侵权行为?
您可以在 url 的末尾添加一个无害的查询参数来破坏浏览器的缓存:
img.src="testImage.jpg?noop=<incrementing_number_here>"
设置元标记和重新加载HTML页面不会影响图像的缓存。例如,如果您想避免缓存图像,请尝试每次都附加一个随机查询参数。
img.src = "testImage.jpg?q=" + Math.random().toString(16).slice(2);