使用Javascript加载和缓存图像并了解HTTP状态代码
我正在尝试预加载图像以删除那些将以404或500 HTTP状态代码响应的图像我需要知道HTTP状态码是什么,我需要缓存图像。我的问题是:使用Javascript加载和缓存图像并了解HTTP状态代码,javascript,jquery,html,angularjs,caching,Javascript,Jquery,Html,Angularjs,Caching,我正在尝试预加载图像以删除那些将以404或500 HTTP状态代码响应的图像我需要知道HTTP状态码是什么,我需要缓存图像。我的问题是: 如果我使用图像或伪标记,图像将被缓存,但我无法知道onerror回调中的HTTP状态代码 如果我使用XHR($.get用于jQuery或$http.get用于angular),我会获得状态代码,但图像不会被缓存(真正的将再次加载数据)。我想我无法控制缓存,因为这是一个浏览器规则 是否有一种方法可以让浏览器缓存HTTP状态代码和图像??通过让onerror触发请
图像
或伪
标记,图像将被缓存,但我无法知道onerror
回调中的HTTP状态代码$.get
用于jQuery或$http.get
用于angular),我会获得状态代码,但图像不会被缓存(真正的
将再次加载数据)。我想我无法控制缓存,因为这是一个浏览器规则是否有一种方法可以让浏览器缓存HTTP状态代码和图像??通过让
onerror
触发请求来获取更多详细信息,从而将两者结合使用
var img= document.createElement('img');
img.src="....";
img.onerror = function(err){
$.get(img.src).fail(xhr){
//parse xhr details and do something with them
})
}
注:这将受到跨域源的CORS限制
或者,如果这是在分配给图像元素的指令中:
link:function(scope, element){
element[0].onerror = function(err){
$.get(element[0].src).fail(xhr){
//parse xhr details and do something with them
})
}
}
当然,这很有效。所以一个电话没办法做到?但为什么?您只关心那些出错的。只是尝试限制对服务器的调用次数(在提供映像之前执行一些逻辑)。嗯
onerror
不提供状态。只有额外的呼叫才会出错。如果您收到500个错误,这些错误也会出现在您的服务器错误日志中。