我正在开发Chrome扩展程序,并使用旧的localStorage来存储设置和缓存,而不是新的chrome.storage.localchrome.storage.sync。我具有unlimitedStorage权限,然后我的缓存很大。我收到QuotaExceededError

如何克服这个问题?

最佳答案

localStorage不是,也不会是无限的

文档中声明了unlimitedStorage权限不适用于localStorage的事实。所引用的错误issue 58985在2010年12月被标记为“ WontFix”。因此,没有,而且也不会是将无限数据存储在localStorage中的解决方案。您将需要选择其他存储数据的方法。

无限的存储选项

storage.local

您的选项包括chrome.storage,它明确用于扩展存储数据。您可以使用storage.local存储本机本地数据(使用unlimitedStorage权限可以是无限的),也可以使用storage.sync存储跨用户Google帐户同步的数据(通过unlimitedStorage)。

Web SQL Database

还有其他用于存储数据的选项。例如,Web SQL Database(通过unlimitedStorage权限专门授予了无限存储空间)。

HTML5本地File APIMDN

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

使用什么

最佳使用方式将取决于您所使用的存储空间。您没有提供有关您的实际使用情况的信息,因此我们无法评估适合您的情况的方法。

应用程序缓存

关于使用unlimitedStorage权限将应用程序缓存增大到很大的问题:是的,文档明确指出声明unlimitedStorage权限将导致应用程序缓存变得不受限制。如果这是一个问题,则无需声明unlimitedStorage权限。

09-12 20:44