使用Javascript加载和缓存图像并了解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触发请

我正在尝试预加载图像以删除那些将以404或500 HTTP状态代码响应的图像我需要知道HTTP状态码是什么我需要缓存图像。我的问题是:

  • 如果我使用
    图像
    或伪
    标记,图像将被缓存,但我无法知道
    onerror
    回调中的HTTP状态代码
  • 如果我使用XHR(
    $.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个错误,这些错误也会出现在您的服务器错误日志中。