preload Image files in JavaScript的标准方法似乎是这样的:

var images_to_load = ['img1.png', 'img2.png', 'img3.png'];
for(var i=0; i<images_to_load.length; i++){
  var img = new Image();
  img.src = images_to_load[i];
}


通过使浏览器请求图像文件,这会将图像加载到缓存中。但是,不能保证图像文件会像cache expiration time is dependent on server settings and browser settings那样保留在缓存中。

如果将Image对象保留在内存中,是否可以保证图像保留在缓存中直到页面关闭?这是一个基本示例:

var images_to_load = ['img1.png', 'img2.png', 'img3.png'];
var loaded_images = [];
for(var i=0; i<images_to_load.length; i++){
  var img = new Image();
  img.src = images_to_load[i];
  loaded_images.push(img);
}

最佳答案

不,没有任何保证。

JavaScript内存中的内容与浏览器中缓存中的内容完全不同。一种可能的解决方案是在缓存过期之前创建图像的新实例。如果重复此过程,则可以确保图像在缓存中始终可用。

10-08 04:27