Chrome 扩展:在浏览器中存储文件的最佳方式(非磁盘)
Posted
技术标签:
【中文标题】Chrome 扩展:在浏览器中存储文件的最佳方式(非磁盘)【英文标题】:Chrome extension: Best way to store files in the browser (non-disk) 【发布时间】:2022-01-06 19:04:51 【问题描述】:在我的 chrome 扩展程序中,我想将文件存储在浏览器中(来自后台脚本)而不是磁盘上,因为我想快速读取和擦除文件。使用 blob URL 的最佳解决方案是什么?如果是这样,我可以将多少数据存储为 blob URL?还是应该将文件内容存储在后台脚本的数组中?
【问题讨论】:
【参考方案1】:Blob
可能是最好的选择。它们就像文件一样——File()
构造函数从它继承属性。数组对于大型数据存储来说是内存和资源密集型的,但如果需要,Int8Array
或 Uint8Array
也可能会起作用。 TypedArray
s 通常比常规数组快。 Blob
s 的大小可以大于 128 MB(它因平台而异,从 128 MB 到 640 MB),这可能会满足大多数要求。但是,如果内存不可用,并且在其他极少数情况下,Blob
s 将被写入磁盘。我不认为Blob
s 是为大量写作而设计的。
【讨论】:
如果blob太大而被强制写入磁盘,是否还能通过blob url访问? 当然——但它会更慢,并且基于磁盘。正如你所说的快速访问,我假设你不想要那个。 谢谢。我正在考虑将 blob 存储在 indexDB 中,以便它们可以通过扩展刷新持续存在。唯一的事情是我希望您能够从内容脚本和后台脚本访问相同的 indexDB。indexedDB
的问题在于它是磁盘访问每次你想读/写的时候,所以它会很慢。
正确。所以我要做的是在扩展生命周期内创建一个要在应用程序中使用的 blob 的对象 url,并将 blob 保存到 indexDB,这样我就可以在扩展刷新后从 indexDB 中获取文件,然后创建在此生命周期中再次使用的 blob url。以上是关于Chrome 扩展:在浏览器中存储文件的最佳方式(非磁盘)的主要内容,如果未能解决你的问题,请参考以下文章