for (let i = 0; i < ITERATIONS; i++) {
await measure();
}
}
async function testServerUpdate() {
async function measure() {
await startProfiler();
let reg = await navigator.serviceWorker.register("sw_serverupdate.sjs");
let promiseSW = new Promise((resolve, reject) => {
window.onmessage = (e) => {
is(e.data, "updatefound");
resolve(performance.now());
};
});
let callbackCounter = 0;
let promiseMain = new Promise((resolve, reject) => {
reg.onupdatefound = (e) => {
callbackCounter++;
// The first "update" happens for the original script,
// and isn't what we're interested in measuring.
if (callbackCounter == 2) {
resolve(performance.now());
}
};
});
let content = document.getElementById("content");
let iframe = document.createElement("iframe");
content.appendChild(iframe); iframe.setAttribute("src", "./fwd_messages_upward.html");
let begin_ts = performance.now();
await reg.update();
let endUpdate_ts = performance.now();
let endMainCallback_ts = await promiseMain;
let endSWCallback_ts = await promiseSW;
let pdata = await stopProfiler();
let internals_ms = inspectProfile(pdata, [ "ServiceWorkerRegistration::Update", "ServiceWorkerRegistration::Update (inner)", "ServiceWorkerUpdateJob::AsyncExecute", "ServiceWorkerUpdateJob::Update", "ServiceWorkerUpdateJob::Install"
]);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.