【问题标题】:Determining HTML5 database memory usage确定 HTML5 数据库内存使用情况
【发布时间】:2010-10-10 10:44:21
【问题描述】:

我正在向我的 Google Chrome 扩展程序添加 sqlite 支持,以存储历史数据。

创建数据库时,需要设置最大大小(我用5MB,很多例子都建议)

我想知道我实际使用了多少内存(例如在添加 1000 条记录后),以了解何时会达到 5MB 限制并采取相应措施。

Chrome 控制台不会显示此类数字。 谢谢。

【问题讨论】:

    标签: sqlite html google-chrome memory-management google-chrome-extension


    【解决方案1】:

    如果您愿意,您可以计算这些数字。基本上,localStorage 和 webStorage 的默认限制是 5MB,其中名称和值保存为 UTF16,因此它实际上是 2.5 MB 存储字符的一半。在 webStorage 中,您可以通过在清单中添加“unlimited_storage”来增加它。

    同样的事情也适用于 WebStorage,但您必须遍历所有表格并计算出每行有多少个字符。

    在 localStorage 中,您可以通过执行填充脚本来测试:

    var row = 0;
    localStorage.clear();
    var populator = function () { 
      localStorage[row] = '';
      var x = ''; 
      for (var i = 0; i < (1024 * 100); i++) { 
        x += 'A'; 
      } 
      localStorage[row] = x; 
      row++;
      console.log('Populating row: ' + row); 
      populator();
    }
    populator();
    

    上面的内容应该在第 25 行崩溃,因为空间不足,大约 2.5MB。你可以反过来计算每行有多少个字符,这决定了你有多少空间。

    另一种方法是始终添加“有效负载”并检查异常是否存在,如果存在,那么您就知道空间不足了。

    try {
      localStorage['foo'] = 'SOME_DATA';
    } catch (e) {
      console.log('LIMIT REACHED! Do something else');
    }
    

    Internet Explorer 做了一些名为“remainingSpace”的操作,但这在 Chrome/Safari 中不起作用: http://msdn.microsoft.com/en-us/library/cc197016(v=VS.85).aspx

    【讨论】:

      【解决方案2】:

      我想添加一个建议。

      如果是 Chrome 扩展,为什么不使用 Web SQL 存储或 Indexed DB?

      http://html5doctor.com/introducing-web-sql-databases/

      http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/

      来源:http://caniuse.com/

      【讨论】:

      • 是的,我使用的是 Web SQL(我写了“sqlite”,我认为它是一样的)我认为 Mohamed 主要写的是本地存储,因为它们具有相同的限制并且更容易制作例子。
      • 是的,做这个例子更容易:) Chrome 使用 SQLite 作为 WebStorage 和 LocalStorage 的数据库存储。但它们都适用具有相同的含义。
      • @UVL。 Web SQL 与 SQLite 不同。一个特定的浏览器或者可以使用 SQLite 作为它的 WebSQL、localStorage 和 IndexedDB。但这是一个实施问题,两者是不同的事情。这就是我建议您使用 API 版本的原因(因为我认为您使用的是独立实现)。
      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2010-11-26
      • 2014-01-04
      • 2011-04-30
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多