如何检查已使用了多少离线存储

How to Check that how much offline storage has been Used

我正在使用离线存储,当存储内存已满时,我想清除它。我只想知道如何使用存储空间。我正在使用以下代码清除离线存储:

  localStorage.clear();

您可以使用 localStorage.length 来获取存储中元素的数量。但它不太可能直接泄露使用了多少存储空间的大小(以字节为单位)——除非你存储的是单调数据,可以让你根据键的数量预测大小。

但是,如果您确实超出了可用限制,则在设置值时会出现 QUOTA_EXCEEDED_ERR 异常。所以,只需将您的代码包装在 try..catch 中,如果您确实得到 error.type 作为 QUOTA_EXCEEDED_ERR,那么您可以清除 space.

您还可以遍历存储中的所有项目以获得其完整大小。但我不会这样做,因为随着存储量的增加,这可能需要一些时间。如果你有兴趣,像这样的东西会起作用:

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 个字符(例如 {},"),因为浏览器会使用它们来包装密钥和价值观。所以尺寸会比实际值略高