我正尝试在不缓存图像的情况下(出于正当理由)检索图像的大小,或者在不下载图像本身的情况下获取其Content-Length
标头。我需要这些信息以使远程图像与控制图像相匹配(如果有其他方法可以在这些约束条件下实现该目标,那么我将不胜枚举)。服务器无法控制。这是我尝试过的:
使用此脚本,我可以轻松获取图像,但不能阻止其缓存:
var img = new Image();
img.src = 'http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif';
通过此操作,我在调试器中获得了标头,但无法访问它们:
$.ajax({
url: 'http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif',
type: 'HEAD',
success: function(data){
console.log(data);
}
});
这样,我无需缓存即可获取图像,但无法访问其属性:
<iframe src="http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif"></iframe>
我已经尝试了每种JSONP组合,包括converters
和dataFilter
都没有成功。
我已经探索了仅下载图像的前n个字节的可能性(这样就不会出现缓存问题),但是似乎只有使用AJAX才有可能,因为它是跨域的,因此阻止了尝试JSONP似乎也不起作用。
总之,我已经尝试了所有我能阅读和思考的内容...我花了过去48小时(和数百个小提琴)来寻找解决方案。我始终认为,采用上述方法,应该有一种方法...
我想念什么?
如何添加查询字符串以避免缓存
var img = new Image();
var rand = (new Date()).getTime();;
img.src = 'http://www.nasa.gov/ ... /images/nasa-logo.gif?r=' + rand ;
您可以使用以下响应标题提供图像:
缓存控制:无缓存,无存储
这将阻止浏览器对其进行缓存,包括代理服务器。
您可以获取系统毫秒数,并在网址末尾添加'?time ='+毫秒,大多数http缓存均基于网址作为键,因此您可能会在每次请求时获得一个新图像