最近、ChromeがChrome 57以降のバックグラウンドタブプロセスを絞り込むことを読んできました(here)。私はChromium 55を実行しており、タブにフォーカスがないときにindexeddbのクエリがはるかに遅いペースで実行されていることに気付きました。Indexeddbは非アクティブなタブでChromiumのOpenCursorを抑制していますか?
例えば、私が持っている:
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)を持っています。アクティブなブラウザのタブでそれらをループするのはほとんど瞬間ですが、非アクティブなタブではこれが突然2分で完了します。
質問:これは、ブラウザのベンダーのバックグラウンドタブプロセスの処理に関連していますか?もしそうなら、無効にするフラグ/読み込み元を指定しますか?
これは、1%を超えるCPUを使用している必要があります。これは、JSONの60レコードで高いと思われます。 '/ XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX – Keith