【发布时间】:2013-03-20 12:45:02
【问题描述】:
我正在开发一个应用程序,其中图像会根据不同的用户操作更改其来源。大约有 200 张图片可以以这种方式显示,我确信它们会在某个时候显示至少 90% 的折扣。
为了防止闪烁,我添加了图像预加载器。
但是,当我更改 IMG 的 SRC 属性时,浏览器会发送一个新的 Get 请求,即使图像已经加载。
根据分析器,这样的请求平均需要大约 30 毫秒,所发生的只是浏览器从缓存中加载图像。
有没有办法阻止浏览器发送额外的请求并直接显示图像,或者这是不可能的?
如果不可能,将所有 200 张图像放入代码中,然后切换一个可见(或更精确地显示),这会是一种不好的做法吗?
如何在预加载器中缓存和图像作为对象并仅切换它们?
我正在考虑的另一件事是将所有这些图像放入一个精灵并仅更改背景位置。
你认为最好的选择是什么?
【问题讨论】:
-
我想,这里的大小肯定很重要。 ) 如果您的图像很小,则可以使用 sprite 技术,否则我会使用 Image 对象。
-
您是否在图像响应上设置 HTTP 缓存标头。 GET 请求是返回完整图像,还是仅返回 304 Not Modified?
-
不,它们返回 200,(从缓存中),其中大约一半需要 5 毫秒,但另一半需要 30 到 80 毫秒。但是,更改发生的频率为每 100 毫秒,所以 30 - 80ms 相对来说太多了。
标签: javascript html browser httprequest