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

标签 javascript jquery offline offline-caching offline-browsing

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

  localStorage.clear();

最佳答案

您可以使用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 字符(例如 {}"),如下所示浏览器会使用它们来包装键和值。因此大小会比实际值稍大。

关于javascript - 如何检查已使用了多少离线存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137074/

相关文章:

javascript - 在 webkit 浏览器中分别从 body 宽度和高度中减去 y-scrollbar 宽度和 x-scrollbar 高度

javascript - 如何使用 javaScript 重新加载页面一次

ios - 离线时在设备上测试 iOS 应用程序

java - 在没有互联网连接的计算机上使用 Scala

javascript - 从字符串日期中删除时间和时区

javascript - 如何从 Google Picker API 获取多张选中的图片

javascript - Highcharts 折线图 - 在点悬停时突出显示 xAxis 标签

ios - 缓存整个网站 - Swift

javascript - 使用 jQuery 选择输入值的第一个字符

javascript - 从ajax获取数据并将其传递到弹出窗口