Chromium 上的 Indexeddb OpenCursor 是否在非活动选项卡上受到限制?

Is Indexeddb OpenCursor on Chromium being throttled on non-active tabs?

我最近读到 Chrome 将从 Chrome 57 (here) 开始限制后台选项卡进程。我是 运行 Chromium 55,我注意到当标签未处于焦点时,我的 indexeddb 查询 运行 速度要慢得多。

比如我有:

return openIndexedDB(this)
  .push(function (db) {
    return new RSVP.Promise(function (resolve, reject) {
      var tx = openTransaction(db, ["metadata"], "readonly");
      if (options.include_docs === true) {
        handleCursor(tx.objectStore("metadata").index("_id").openCursor(),
          pushIncludedMetadata, resolve, reject);
      } else {
        handleCursor(tx.objectStore("metadata").index("_id")
                        .openKeyCursor(), pushMetadata, resolve, reject);
      }
    });
  })
  .push(function () {
    return result_list;
  });
};

其中 handleCursor 为:

  function handleCursor(request, callback, resolve, reject) {
    request.onerror = function (error) {
      if (request.transaction) {
        request.transaction.abort();
      }
      reject(error);
    };

    request.onsuccess = function (evt) {
      var cursor = evt.target.result;
      if (cursor) {
        // XXX Wait for result
        console.log("waiting");
        try {
          console.log("done");
          callback(cursor);
        } catch (error) {
          reject(error);
        }

        // continue to next iteration
        cursor["continue"]();
      } else {
        resolve();
      }
    };
  }

我的 indexeddb 数据库只有大约 60 条记录(JSON,每条 <1k)。在活动浏览器选项卡中循环遍历它们几乎是即时的,而在非活动选项卡上,这突然需要两分钟以上才能完成。

问题:这是否与浏览器供应商减慢后台选项卡进程有关?如果是这样,disable/sources 的标志是否需要继续阅读?

在 Chrome55 中,后台选项卡限制和索引数据库如何交互存在问题:https://bugs.chromium.org/p/chromium/issues/detail?id=675372 - 简短版本:事件传递被限制为每秒一次,因此游标(例如)会迭代的很慢。

在 56 及更高版本中,一旦事务在后台选项卡中启动,索引数据库事件不应受到限制。