我正在尝试检索图像的大小而不缓存它(出于正当理由)或获取其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小时(和数百个小提琴)寻找解决方案。我一直有这种感觉,应该有办法......
我错过了什么?
答案 0 :(得分:1)
如何添加查询字符串以避免缓存
var img = new Image();
var rand = (new Date()).getTime();;
img.src = 'http://www.nasa.gov/ ... /images/nasa-logo.gif?r=' + rand ;
答案 1 :(得分:0)
您可以使用以下响应标头提供图像:
缓存控制:无缓存,无存储
这将阻止浏览器缓存它,包括代理服务器。
答案 2 :(得分:-1)
你可以获得系统毫秒并在网址末尾添加&#39;?time =&#39; +毫秒,大多数http缓存基于网址作为密钥,因此您可以获得新的图像每个请求