为什么空的IndexedDB仍然占用空间?

时间:2013-04-05 19:19:14

标签: google-chrome google-chrome-devtools indexeddb

我正在使用IndexedDB在Chrome中保存游戏数据。

平均游戏大约4MB。保存几个游戏,然后删除它们之后,开发控制台的“资源”选项卡显示我的indexedDB是空的,正如预期的那样,但如果我转到内容设置,“Cookie和网站数据”它显示我大约12MB作为indexedDB磁盘上的大小。

这是之后刷新,甚至是Chrome的重启。以下是我的删除代码,当我删除时,我获得了成功,并且对旧数据的查询没有返回任何内容,正如预期的那样。

database.indexedDB.deleteGame = function(nameIn){
    var db = database.indexedDB.db;
    var trans = db.transaction(["saves"], "readwrite");
    var store = trans.objectStore("saves");
    var wipeSlate = store.delete(nameIn);
    wipeSlate.onsuccess = function(e) {
        console.log("Old game wiped");
    };
    wipeSlate.onerror = function(e) {
        console.log("I don't think the old game existed..." + e);
    };
};

我已经检查了以下问题(搜索结果也没有显示任何太有希望的东西):

但他们都没有处理我的问题,非常感谢所有人的帮助。

2 个答案:

答案 0 :(得分:2)

Chrome不会立即从磁盘中删除数据,只是标记为已删除。如果你向IndexedDB写了大约4兆字节,LevelDB将进行压缩,包含旧条目的文件将被删除。

Chrome没有50mb的限制,也不会要求IndexedDB的用户权限。

这个问题可能会有所帮助。 What are the storage limits for the Indexed DB on Google's Chrome browser?

答案 1 :(得分:1)

你为什么担心?

操作系统和浏览器可采用整体方法来优化用户体验。存储就是其中之一。在大多数情况下,而不是删除,将它们标记为已删除更有效。