有很多预加载脚本示例可用于堆栈溢出但有一种方法可以检查浏览器是否已将图像预先加载到其缓存中,如果是,则不会启动/超过图像预加载使用.load()函数并让浏览器放入图像?
答案 0 :(得分:1)
我不这么认为,但更重要的是,如果您的浏览器已经拥有该图像,它将不会尝试重新加载它(它只会向服务器询问标题并看到图像没有更改)
如果你愿意,你可以在图像上加上'far futures expires'标题,这样浏览器甚至不会尝试检查服务器,只是假设它在缓存中的任何图像都没问题。这样可以有效地完成你的要求。
我认为Yahoo说得好于我:
浏览器(和代理)使用缓存来减少数量和大小 HTTP请求,使网页加载速度更快。 Web服务器使用 在HTTP响应中过期标头告诉客户端多长时间 组件可以缓存。这是一个遥远的未来Expires标题,告诉 此响应在2010年4月15日之前不会过时的浏览器。 到期日:2010年4月15日星期四20:00:00 GMT
如果您的服务器是Apache,请使用ExpiresDefault指令设置 相对于当前日期的到期日期。这个例子了 ExpiresDefault指令将Expires日期设置为10年 请求的时间。 ExpiresDefault“访问加10年”
请记住,如果您使用远期的Expires标头,则必须这样做 组件更改时更改组件的文件名。在 雅虎我们经常将此步骤作为构建过程的一部分:一个版本 数字嵌入在组件的文件名中,例如, yahoo_2.0.6.js。
所以基本上,你可以把标题Expires: Thu, 31 Dec 2030 0:00:00 GMT
放在一起,浏览器也不会在29年左右再次寻找图像:)。当然这意味着如果您更改图像,则必须重命名它们。