Chome 扩展 - QuotaExceededError localStorage

hap*_*set 2 javascript local-storage google-chrome-extension

我正在开发一个 Chrome 扩展程序,并使用旧的 localStorage 来存储设置和缓存,而不是新的chrome.storage.localchrome.storage.sync. 我获得了unlimitedStorage许可,然后我的缓存变得巨大。我正在接收QuotaExceededError

如何克服这个问题呢?

Mak*_*yen 5

localStorage不是、也不会是无限的

文档中说明了该unlimitedStorage许可不适用于的事实。localStorage所引用的错误(问题 58985)于 2010 年 12 月被标记为“WontFix”。因此,现在没有也不会有解决方案供您在localStorage. 您将需要选择其他一些方法来存储数据。

无限的存储选项

storage.local

您的选项包括chrome.storage明确用于存储数据的扩展的选项。您可以存储计算机本地的数据,使用storage.local(可以不受权限限制unlimitedStorage),或在用户的 Google 帐户之间同步的数据,使用storage.sync(配额未设置为无限制unlimitedStorage)。

Web SQL 数据库

还有其他存储数据的选项。例如Web SQL数据库,它被专门授予了无限存储的权限unlimitedStorage

HTML5 本地文件 API ( MDN )

如果获得许可,您可以使用文件 API 存储的数据量将不受限制unlimitedStorage。您还可以通过调用 来单独请求特定的配额大小webkitStorageInfo.requestQuota(),而无需使用unlimitedStorage权限。当您这样做时,系统将要求用户批准存储请求。如果您确实使用该unlimitedStorage权限,则无需单独请求配额。

使用什么

最好使用什么取决于您使用存储的具体用途。您没有提供有关实际用途的信息,因此我们无法判断什么最适合您的情况。

应用程序缓存

至于您的应用程序缓存随着unlimitedStorage权限而增长到很大的问题:是的,文档明确指出声明unlimitedStorage权限将导致应用程序缓存变得无限。如果这是一个问题,您将不需要声明许可unlimitedStorage