2017-09-20 15 views
0

최근 Chrome에서 Chrome 57 이후의 백그라운드 탭 프로세스를 조정할 것이라고 (Waddy : here) 읽었습니다. 저는 Chromium 55를 실행 중이며 탭에 포커스가 없을 때 indexeddb 쿼리가 훨씬 느리게 실행되고 있음을 확인했습니다.Indexeddb가 비활성 인 탭에서 Chromium의 스로틀되고 있습니까?

예를 들어, 내가 가진 :

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(); 
     } 
    }; 
    } 

내 색인화 된 데이터베이스는 약 60 기록이있다 (JSON을 각 < 1K). 액티브 브라우저 탭에서 루프를 돌리는 것은 거의 순간적이며, 비활성 탭에서는 갑자기 2 분 이상이 소요됩니다.

질문 : 브라우저 공급 업체의 백그라운드 탭 프로세스 속도 저하와 관련이 있습니까? 그렇다면 비활성화/소스를 읽을 플래그가 있습니까?

+0

은 다음 JSON의 60 개 레코드에 대한 높은 것보다 1 %의 CPU를 복용해야됩니다. result' 기다립니다 // XXX, 당신은이 부분을 놓친'위의 코드를 보면, 코드는 여기에 무엇을합니까? – Keith

답변

1

크롬에서 백그라운드 탭 스로틀 링과 인덱스 된 DB가 상호 작용하는 방식에 문제가있었습니다. https://bugs.chromium.org/p/chromium/issues/detail?id=675372 - 짧은 버전 : 이벤트 전달이 초당 한 번으로 제한되므로 커서가 매우 느리게 반복됩니다.

56

이상 한 번 거래는 인덱스 DB 이벤트가 스로틀하지 않아야 배경 탭에서 시작했다.

+0

아. 링크를 주셔서 대단히 감사합니다. 내가 찾고 있던 것과 내가 경험 한 것. 그것은 배경 탭에 쿼리를 줄이기 위해 강제로, 그래서 긍정적 인 부작용이 전반적으로 ... – frequent