1

我正在建立一个网页抽认卡来帮助我的学习。当我提出问题时,会显示一个图像,当我选择回答时,会显示另一个图像。选择答案后,我无需等待答案图像下载,而是在显示问题图像后立即开始预加载答案图像。我的预加载器是:

function preloadImage(src) {
    var image = new Image();
    image.src = src;
}

我的理解是,这会将图像文件缓存在浏览器中。通过将文件名分配给图像标签的 src 来显示图像文件。一旦图像文件与 Image() 对象相关联,那么当该文件被分配给 src 时,浏览器就会从缓存中提供图像。

如果我对我的回答感到满意,抽认卡将从牌组中取出,如果我对我的回答不满意,抽认卡将放回包中,稍后会被问到。

如果再次询问返回到卡片组的抽认卡,则将再次调用预加载以获取答案图像。

我的问题是:对我的预加载器的第二次和后续调用会导致从服务器下载文件以分配给新的 Image() 对象,还是会从浏览器缓存中读取。

提前谢谢了

4

1 回答 1

1

取决于服务器配置。任何文件都可以设置为缓存或不缓存。大多数情况下,图像被设置为缓存很长时间,因此很有可能不会再次下载。我建议在可以播放之前预加载所有图像,或者至少预加载大部分图像,具体取决于您如何设置应用程序。这样,对用户的干扰很小。

更直接地说,不,对该方法的后续调用不会强制下载(假设服务器设置有正确的过期标头)。

于 2013-03-03T21:35:48.750 回答