我正在使用离线存储,并希望在存储内存已满时将其清除。我想要的就是知道如何获取使用存储。我正在使用以下代码清除离线存储:
localStorage.clear();
您可以使用 localStorage.length
获取存储中的元素计数。但是,它不太可能直接放弃使用多少存储的大小(字节) - 除非您存储单调数据,否则您可以根据键计数来预测大小。
,如果设置值超过可用限制,则在设置值时确实会得到QUOTA_EXCEEDED_ERR
例外。因此,只需将代码包装在try..catch
中,如果您确实将error.type
作为QUOTA_EXCEEDED_ERR
,则可以清除空间。
您还可以迭代存储中的所有项目以获得其全尺寸。但是,由于随着存储的增加可能需要一些时间,我不会这样做。如果您有兴趣,类似的事情将有效:
var size = 0;
for (var i = 0, len = localStorage.length; i < len; ++i) {
size += localStorage.getItem(localStorage.key(i)).length;
}
console.log("Size: " + size);
ref:当localstorage已满时会发生什么?
ps:我试图通过在localstorage键上迭代并添加大小来获得大小,但浏览器选项卡崩溃了。所以我会说依靠QUOTA_EXCEEDED_ERR
更好。
更新
您还可以使用JSON.stringify(localStorage).length
进行粗略的估计。这似乎比在钥匙上迭代更快,并且不会崩溃浏览器。但是请记住,它包含其他JSON字符(例如{
,}
,,
和"
),因为浏览器将使用它们来包装键和值。因此,大小将略高于实际值。