如何检查已使用了多少离线存储
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 个字符(例如 {
、}
、,
和 "
),因为浏览器会使用它们来包装密钥和价值观。所以尺寸会比实际值略高
我正在使用离线存储,当存储内存已满时,我想清除它。我只想知道如何使用存储空间。我正在使用以下代码清除离线存储:
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 个字符(例如 {
、}
、,
和 "
),因为浏览器会使用它们来包装密钥和价值观。所以尺寸会比实际值略高