【问题标题】:jQuery image preload from cache从缓存中预加载 jQuery 图像
【发布时间】:2011-11-23 11:20:02
【问题描述】:

有很多关于堆栈溢出的预加载脚本示例,但是有没有办法检查浏览器是否已经在其缓存中预加载了图像,如果是,则不要启动/超越图像预加载使用 .load() 函数,让浏览器放入图片?

【问题讨论】:

    标签: jquery image caching browser load


    【解决方案1】:

    我不这么认为,但更重要的是,如果您的浏览器已经有图像,它无论如何都不会尝试重新加载它(它只会向服务器询问标题并看到图像没有改变) .

    如果您愿意,您可以在图像上放置“远期到期”标头,这样浏览器甚至不会尝试检查服务器,而只是假设其缓存中的任何图像都正常。这将有效地满足您的要求。

    我认为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 年左右:)。当然,这意味着如果您更改图像,则必须重命名它们。

    【讨论】:

    • 我明白你在说什么,但是如果图像已经被浏览器缓存,是否可以使用 javascript 检查,所以我不需要触发 .load() 事件。加载后我的所有图像都淡入淡出,我想要实现的是:如果图像已经被浏览器缓存,则不会触发 .load() 事件,只是让浏览器填充它们,以便 javascript fadeIn 不会不要采取行动。
    猜你喜欢
    • 2018-08-03
    • 2013-09-17
    • 2013-03-29
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多