Firefox附加组件:存储随时间变化的数组的最佳方法是什么?

问题描述 投票:0回答:1

我有一个Firefox插件,需要保留字符串数组。

字符串是简单的字符串-确切的文件名,例如:

11111.jpg
22222.gif
33333.jpg
44444.jpg
55555.png

此数组是动态的-我需要不时向其中添加项目,并删除一些。

我已经习惯了关系数据库,使用SQL查询来对数据执行操作,但是对于Firefox插件,似乎存储数据的方法是使用键值对。

因此,用于存储我的(动态增长/缩小)的数组,这是否意味着我需要将整个数组存储为键值对的值,然后每次我想从该数组添加/删除一个项目时,我需要:1)获取键值对,2)编辑阵列(在内存中),3)全部保存回存储区吗?

没有比阅读所有内容,进行小的更改然后再次保存所有内容更好的方法吗?

firefox local-storage firefox-addon key-value firefox-webextensions
1个回答
1
投票

将数组存储在一个键下,对其进行读取,更新,在同一键下进行写入是使用扩展存储API的唯一直接方法。

[如果您发现它在Firefox探查器中明显变慢,则可以重新组织数据,以便将其存储在较小的存储桶中。您甚至可以在扩展存储API上进行自己复杂的db模仿,该API将单独存储每个值并保留一个index键列出每个值,因此除了写入单个值外,您将只对该索引进行完整的更新本身。索引甚至可以成块或使用其他高级结构。也许甚至有一个现有的库。

您可以在后台脚本(或除内容脚本以外的任何其他扩展脚本)中使用诸如IndexedDB之类的DOM存储,它提供了一些适当的数据库功能,但可靠性不高,因为许多用户b)在设置为全局私有模式或禁用cookie时,Firefox将禁用扩展内的DOM存储。c)扩展中的IndexedDB已知存在导致数据丢失的无法解释的错误。像PouchDB这样的库在这里将非常有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.