我正在使用离线存储,并希望在存储空间已满时将其清除。我想要的只是知道如何使用存储。我使用以下代码清除脱机存储:
localStorage.clear();
答案 0 :(得分:2)
您可以使用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字符(例如{
,}
,,
和"
),因为浏览器会使用它们来包装键和值。所以尺寸会略高于实际值。