我正在使用离线存储,并且想在存储内存已满时清除它。我只想知道如何使用存储空间。我使用以下代码来清除离线存储:
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);
引用号:What happens when localStorage is full?
PS:我尝试通过迭代 localStorage 键并添加大小来获取大小,但浏览器选项卡崩溃了。所以我想说依靠 QUOTA_EXCEEDED_ERR
更好。
更新
您还可以使用 JSON.stringify(localStorage).length 粗略估计大小。这似乎比迭代键更快,并且不会使浏览器崩溃。但请记住,它包含其他 JSON 字符(例如 {
、}
、、
和 "
),如下所示浏览器会使用它们来包装键和值。因此大小会比实际值稍大。
关于javascript - 如何检查已使用了多少离线存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137074/