如何检查已使用了多少脱机存储

时间:2017-09-10 03:38:14

标签: javascript jquery offline offline-caching offline-browsing

我正在使用离线存储,并希望在存储空间已满时将其清除。我想要的只是知道如何使用存储。我使用以下代码清除脱机存储:

  localStorage.clear();

1 个答案:

答案 0 :(得分:2)

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

但如果超出可用限制,则在设置值时会出现QUOTA_EXCEEDED_ERR异常。因此,只需将代码包装在try..catch中,如果确实error.typeQUOTA_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字符(例如{},"),因为浏览器会使用它们来包装键和值。所以尺寸会略高于实际值。