【发布时间】:2011-11-23 11:20:02
【问题描述】:
有很多关于堆栈溢出的预加载脚本示例,但是有没有办法检查浏览器是否已经在其缓存中预加载了图像,如果是,则不要启动/超越图像预加载使用 .load() 函数,让浏览器放入图片?
【问题讨论】:
标签: jquery image caching browser load
有很多关于堆栈溢出的预加载脚本示例,但是有没有办法检查浏览器是否已经在其缓存中预加载了图像,如果是,则不要启动/超越图像预加载使用 .load() 函数,让浏览器放入图片?
【问题讨论】:
标签: jquery image caching browser load
我不这么认为,但更重要的是,如果您的浏览器已经有图像,它无论如何都不会尝试重新加载它(它只会向服务器询问标题并看到图像没有改变) .
如果您愿意,您可以在图像上放置“远期到期”标头,这样浏览器甚至不会尝试检查服务器,而只是假设其缓存中的任何图像都正常。这将有效地满足您的要求。
我认为Yahoo 说得比我好:
浏览器(和代理)使用缓存来减少 HTTP 请求,使网页加载更快。 Web 服务器使用 HTTP 响应中的 Expires 标头告诉客户端多久 组件可以被缓存。这是一个遥远的未来 Expires 标头,告诉 该响应在 2010 年 4 月 15 日之前不会过期的浏览器。 过期:2010 年 4 月 15 日星期四 20:00:00 GMT
如果您的服务器是 Apache,请使用 ExpiresDefault 指令设置 相对于当前日期的到期日期。这个例子 ExpiresDefault 指令将 Expires 日期设置为 10 年后 请求的时间。 ExpiresDefault "访问加 10 年"
请记住,如果您使用遥远的未来 Expires 标头,您必须 每当组件更改时更改组件的文件名。在 雅虎!我们经常将这一步作为构建过程的一部分:一个版本 number 嵌入在组件的文件名中,例如, yahoo_2.0.6.js.
所以基本上,你可以把标题 Expires: Thu, 31 Dec 2030 0:00:00 GMT 和浏览器不会再去寻找图像再过 29 年左右:)。当然,这意味着如果您更改图像,则必须重命名它们。
【讨论】: