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() 构造函数从它继承属性。数组对于大型数据存储来说是内存和资源密集型的,但如果需要,Int8ArrayUint8Array 也可能会起作用。 TypedArrays 通常比常规数组快。 Blobs 的大小可以大于 128 MB(它因平台而异,从 128 MB 到 640 MB),这可能会满足大多数要求。但是,如果内存不可用,并且在其他极少数情况下,Blobs 将被写入磁盘。我不认为Blobs 是为大量写作而设计的。

【讨论】:

如果blob太大而被强制写入磁盘,是否还能通过blob url访问? 当然——但它会更慢,并且基于磁盘。正如你所说的快速访问,我假设你不想要那个。 谢谢。我正在考虑将 blob 存储在 indexDB 中,以便它们可以通过扩展刷新持续存在。唯一的事情是我希望您能够从内容脚本和后台脚本访问相同的 indexDB。 indexedDB 的问题在于它是磁盘访问每次你想读/写的时候,所以它会很慢。 正确。所以我要做的是在扩展生命周期内创建一个要在应用程序中使用的 blob 的对象 url,并将 blob 保存到 indexDB,这样我就可以在扩展刷新后从 indexDB 中获取文件,然后创建在此生命周期中再次使用的 blob url。

以上是关于Chrome 扩展:在浏览器中存储文件的最佳方式(非磁盘)的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 扩展程序是不是可以访问本地存储?

12 款不能少的使网页浏览获得的最佳体验Chrome 扩展

12 款不能少的使网页浏览获得的最佳体验Chrome 扩展

我应该只使用IndexedDB还是同时使用IndexedDB和chrome.storage?

如何从 chrome 扩展中读取文件?

Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载