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

agr*_*son 5 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);
    };
};
Run Code Online (Sandbox Code Playgroud)

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

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

dgr*_*gan 5

Chrome 不会立即从磁盘中删除数据,只是将其标记为已删除。如果您向 IndexedDB 写入约 4 MB 的数据,LevelDB 将进行压缩,并且包含旧条目的文件将被删除。

Chrome 没有 50mb 限制,并且不会向 IndexedDB 请求用户许可。

这个问题可能会有所帮助。 Google Chrome 浏览器上索引数据库的存储限制是多少?