【发布时间】:2013-10-24 02:53:37
【问题描述】:
前奏
我的 Web 应用程序(关键字:HTML、JavaScript、jQuery;必须在中工作:IE8+、Chrome、FF)必须呈现来自某种类型的实时图像数据-网络摄像头。这个“网络摄像头”集成了一个网络服务器,以BMP 提供实时图像数据。
通过设置img 标签的src 属性“下载”图像数据。
问题
我想在客户端分析图像数据。为此,我想使用XMLHttpRequest(使用this provided stackoverflow answer)预下载图像,然后更新img 标签的src 属性。我的理解是浏览器应该然后使用通过XMLHttpRequest下载的缓存图片数据。
问题是,浏览器(IE8+、FF 和 Chrome)向服务器发出另一个请求以再次下载图像(即它不使用缓存的数据或数据一开始就没有缓存)。
如何让浏览器缓存数据并使用它而不是发出另一个请求?
附录
服务器为 Chrome 发送Cache-Control: max-age=5, public,为所有其他浏览器发送Cache-Control: no-store, max-age=5。
在 Chrome 中,我可以通过发送 304 Not Modified 来处理第二个请求。浏览器将使用缓存的图像。在所有其他(提及的)浏览器中,这不起作用。
更新 1
我知道,我可以使用Data URI Scheme 来更新src 属性。但是,这不适用于 IE8(请参阅上面的要求),因为 IE8 仅支持最大 32KB。
【问题讨论】:
-
我很确定你可以使用 HTML5 技术直接绘制图像而不是使用
<img src="...插入它,那么你也不必担心缓存。 -
@DanFromGermany:感谢您的建议。由于我必须支持 IE8,因此此处不能选择 HTML5。顺便说一句,即使是 HTML5 也无法解决缓存问题。
标签: javascript html xmlhttprequest browser-cache cache-control