XMLHttpRequest:显式启用浏览器缓存(二进制数据)
XMLHttpRequest: Explicitly ENABLE browser-caching (binary data)
Prelude
My Web-Application (关键字: HTML, JavaScript, jQuery;必须在IE8+,Chrome,FF)中工作,必须呈现来自WebCam的实时图像数据。该"网络摄像头"集成了一个网络服务器,BMP
提供实时图像数据。
图像数据通过设置img
标签的src
属性"下载"。
问题
我想在客户端分析图像数据。为此,我想使用 XMLHttpRequest
预下载图像(使用此提供的 stackoverflow 答案),然后更新 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
我知道,我可以使用数据 URI 方案来更新 src
属性。但是,这不适用于IE8(请参阅上面的要求),因为IE8仅支持最大32KB的此类内容。
我通过执行显而易见的操作解决了该问题:
-
首先通过隐藏
img
(通过设置src
)请求图像。这样,图像就会被浏览器缓存。 -
之后通过 AJAX 请求映像二进制数据。由于浏览器随后使用上述缓存数据,因此我可以分析图像数据,而无需发出另一个请求。
-
更新"可见"图像的
src
。
这样我就可以实现我所需要的:查看具有先前数据分析的"实时"图像,而必须两次请求图像。
- 如何处理从条形码扫描仪返回的二进制数据
- 将图像文件存储在猫鼬模式中的二进制数据中,并以html形式显示图像
- 二进制数据的可移植hashCode实现
- Javascript-将类型化数组保存为blob,并作为二进制数据读回
- 获取二进制数据并将其保存为.mp3文件Javascript
- 二进制数据的createObjectUrl失败
- 将数据结构转换为二进制数据
- 将二进制数据发送到服务器
- 将通过 AJAX 上传的二进制数据保存在 PHP 服务器上
- 如何在IE9中读取二进制数据
- 如何将二进制数据映射到javascript中的字符
- Base64解码不适用于二进制数据
- 如何在Firefox中使用xmlhttprequest和二进制数据,例如图像
- 通过HTTP请求将二进制数据上传到AppEngineBlobstore
- 为什么在Web套接字中使用二进制数据
- 在将图像作为原始图像二进制数据(png或jpeg)上传到服务器之前,裁剪或调整图像大小
- 如何在不编码或保存数据的情况下将二进制数据从javascript传递到actionscript(网页到flash)
- 使用牛仔和MessagePack通过websocket发送二进制数据
- 如何在严格模式下将附件下载为二进制数据
- 如何在浏览器中显示单词/ pdf二进制数据