2017-04-12 46 views
0

如何从浏览器缓存中清除下载的图片?如何从缓存中清除下载的图片

这里是我assing新的src到<img>

img.onload = function() { 
      var canvas = document.createElement("canvas"); 
      canvas.width = this.width; 
      canvas.height = this.height; 

      var ctx = canvas.getContext("2d"); 
      ctx.drawImage(this, 0, 0); 

      var dataURL = canvas.toDataURL("image/png"); 

      imageSrc = dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 

      self.$cameraImg.attr('src', 'data:image/png;base64,' + imageSrc); 
     }; 
img.src = '/camera/image/vehicle/' + id + '/code/' + code + '/cam_no/1/'; 

很多下载后,浏览器内存使用增长到数量庞大(> 1GB),之后,我得到浏览器崩溃(Chrome和Firefox)。

enter image description here

回答

0

我找到了解决办法。

下载图像为base64而不是image而不使用new Image对象和画布。

var xhr = $.ajax({ 
      type: "post", 
      url: '/camera/image/vehicle/' + self.selected.id + '/code/' + code + '/cam_no/1/', 
      data: {}, 
      success: function (o) { 
       if (o) { 
        if (!o.err) { 

         self.$cameraImg.attr('src',''); 
         self.$cameraImg.attr('src', 'data:image/png;base64,' + o); 

        } 
       } 
      }, 
      error: function (xhr) { 

      } 
     }); 
1

你应该从服务器端做到这一点。因此,这取决于您在那里使用的是什么技术。这里有很多想法如何:How to set HTTP headers (for cache-control)?。但不要使用HTML元标记,因为它被认为是缓存控制的一个不好的习惯。