【发布时间】:2017-11-29 21:35:42
【问题描述】:
只有在服务器中更改源图像时,是否可以在 Javascript 中更新 "backgound-image: \"<some-url>\" 中传入的 url 指向的 CSS 图像。 IE。缓存图像,然后在需要重新加载时从服务器检索图像并将其与缓存的图像进行比较。然后,仅在更新时重新加载它。我知道为了通过Javascript刷新CSS中的图像,图像必须在“?”之后有不同的字符串。在图像源中,一种方法是在“?”之后使用Date.getTime 方法返回的当前时间。例如。 (我从这里https://stackoverflow.com/a/1077051/7000599得到这个方法):
$(".some-css-class").css("backgound-image", "url(" + "\"" + some_source + "?" + new Date().getTime() + "\"" + ")");
但是,当我需要更新background-image 时,我想调用上述逻辑,仅当它检测到图像已更改时。那么有没有办法检测到这种变化呢?
【问题讨论】:
-
您需要创建一个计时器,每隔几秒对图像执行一次 XMLHTTP 请求,并检查图像的最后修改日期,然后将其与文件保存时间的缓存副本进行比较最后修改。这似乎是一项非常大量的工作,而且相当密集。为什么您需要更新图像?您不能确保访问者从一开始就不会缓存该图像吗?
-
@ObsidianAge 不,但是例如,如果我在某处设置了 onInterval 事件来更新照片,我希望事件处理程序仅在缓存图像!= 新图像时更新图像,所以,例如,我不会看到图像闪烁,除非它真的在更新!
-
检测它的唯一方法是加载它....或者您有一个服务告诉您它已更改。所以要么你在每次调用时打破缓存(查询字符串或没有缓存头),要么你写一些东西说图像发生了变化。
标签: javascript jquery css image caching