我正在开发Chrome扩展程序,并使用旧的localStorage来存储设置和缓存,而不是新的chrome.storage.local
和chrome.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 API(MDN)
使用unlimitedStorage
权限,可以使用File API存储的数据量变得不受限制。您也可以通过调用webkitStorageInfo.requestQuota()
单独请求特定的配额大小,而无需使用unlimitedStorage
权限。当您这样做时,将要求用户批准存储请求。如果您确实使用unlimitedStorage
权限,则不需要单独请求配额。
使用什么
最佳使用方式将取决于您所使用的存储空间。您没有提供有关您的实际使用情况的信息,因此我们无法评估适合您的情况的方法。
应用程序缓存
关于使用unlimitedStorage
权限将应用程序缓存增大到很大的问题:是的,文档明确指出声明unlimitedStorage
权限将导致应用程序缓存变得不受限制。如果这是一个问题,则无需声明unlimitedStorage
权限。