indexedDB的每记录大小限制是多少?

Eld*_*ley 7 javascript html5 indexeddb

我正在为HTML5构建文件存储,我使用indexedDB作为存储,我通过xmlHttpRequest从服务器请求文件,响应类型为arrayBuffer(对于chrome)和blob(对于其他浏览器).

即使文件集合大小为500MB或更多,一切都很好(嘿,它甚至可以达到GB).但是当我将文件添加到indexedDB时,我注意到一些奇怪的事情,当单个文件超过~120MB 时,它会触发错误,因此不会存储.但是当文件小于120MB时,它将存储它.

请注意,存储单个文件> 120MB时只会出现此错误,例如,200MB的.mp4文件会触发错误,但如果我有5个视频,每个视频的大小都为100MB(因此总数将为是500MB)一切都会好的.

我想知道这是一个限制规则还是一些故障,两者有相同的错误.我没有找到任何关于它的文档.我在IE和Chrome中测试过它.

编辑: 好的,我在存储文件时显然在indexedDB的add或put函数中得到了这个错误:

在e.target.error.message里面:

序列化值太大(size = 140989466 bytes,max = 133169152 bytes)

Cer*_*rin 0

我认为这是您的浏览器的 IndexedDB 实现的问题。当我尝试将 100 MB 文件存储到 IndexedDB 记录中时,我自己在 Firefox 中也遇到了同样的错误,但相同的代码在 Chrome 中运行良好。似乎不同的浏览器有不同的实现怪癖和限制。

就我个人而言,我怀疑这是 Firefox 中的一个错误,因为 Firefox 会授予请求的大小,但随后会阻止单个记录使用整个大小,而 Chrome 则更宽容。