Keep native Chromium loading and prevent stale browser cache entries
This commit is contained in:
@@ -354,3 +354,6 @@ when diagnosing historical regressions.
|
||||
Phase 6 counts its fetch-owned app.js response in initial JS/CSS bytes. Since the
|
||||
bootstrap consumes that response asynchronously, DOMContentLoaded no longer means
|
||||
app execution is complete; compare the existing actual boot-done landmark.
|
||||
|
||||
`--scenario warm,offline,update-js,update-css,update-feature` runs a regression
|
||||
sweep without repeating an already-completed cold acceptance run.
|
||||
|
||||
@@ -709,6 +709,8 @@ async function main() {
|
||||
if (options.browser === 'all' || options.browser === 'chromium') browsers.push(pw.chromium);
|
||||
if (options.browser === 'all' || options.browser === 'webkit') browsers.push(pw.webkit);
|
||||
|
||||
const requestedScenarios=new Set(options.scenario.split(','));
|
||||
const wants=name=>requestedScenarios.has('all')||requestedScenarios.has(name);
|
||||
const profiles = [];
|
||||
if (options.profile === 'all' || options.profile === 'lte') profiles.push('lte');
|
||||
if (options.profile === 'all' || options.profile === 'lossy') profiles.push('lossy');
|
||||
@@ -773,7 +775,7 @@ async function main() {
|
||||
console.log(`Proxy listening on port ${proxy.port} (mode: ${proxyProfile})`);
|
||||
|
||||
// 1. Cold Scenario
|
||||
if (options.scenario === 'all' || options.scenario === 'cold') {
|
||||
if (wants('cold')) {
|
||||
console.log(` [Scenario: Cold Load] running ${options.runs} iterations...`);
|
||||
const coldRuns = [];
|
||||
for (let r = 0; r < options.runs; r++) {
|
||||
@@ -781,7 +783,7 @@ async function main() {
|
||||
const res = await runColdScenario({ browserType: bType, server, proxy, profile: prof });
|
||||
if(options.assertCold)assertColdAssets(res.requests);
|
||||
coldRuns.push(res);
|
||||
console.log(`done (${res.wireBytes} bytes, ${res.requestCount} reqs, boot=${res.bootDone}ms)`);
|
||||
console.log(`done (${res.wireBytes} bytes, ${res.requestCount} reqs, fcp=${res.fcp}ms, boot=${res.bootDone}ms)`);
|
||||
}
|
||||
|
||||
results.browsers[bName][prof].cold = {
|
||||
@@ -807,7 +809,7 @@ async function main() {
|
||||
}
|
||||
|
||||
// 2. Warm Scenario
|
||||
if (options.scenario === 'all' || options.scenario === 'warm') {
|
||||
if (wants('warm')) {
|
||||
console.log(` [Scenario: Warm Load] running ${options.runs} iterations...`);
|
||||
const warmRuns = [];
|
||||
for (let r = 0; r < options.runs; r++) {
|
||||
@@ -829,7 +831,7 @@ async function main() {
|
||||
}
|
||||
|
||||
// 3. Offline Scenario
|
||||
if (options.scenario === 'all' || options.scenario === 'offline') {
|
||||
if (wants('offline')) {
|
||||
console.log(` [Scenario: Offline Reload] running ${options.runs} iterations...`);
|
||||
const offRuns = [];
|
||||
for (let r = 0; r < options.runs; r++) {
|
||||
@@ -851,7 +853,7 @@ async function main() {
|
||||
}
|
||||
|
||||
// 4. Update N -> N+1 (JS)
|
||||
if (options.scenario === 'all' || options.scenario === 'update-js') {
|
||||
if (wants('update-js')) {
|
||||
console.log(` [Scenario: Update N->N+1 (1-line app.js)] running ${options.runs} iterations...`);
|
||||
const updJsRuns = [];
|
||||
for (let r = 0; r < options.runs; r++) {
|
||||
@@ -878,7 +880,7 @@ async function main() {
|
||||
}
|
||||
|
||||
// 5. Update N -> N+1 (CSS)
|
||||
if (options.scenario === 'all' || options.scenario === 'update-css') {
|
||||
if (wants('update-css')) {
|
||||
console.log(` [Scenario: Update N->N+1 (1-line theme-glass.css)] running ${options.runs} iterations...`);
|
||||
const updCssRuns = [];
|
||||
for (let r = 0; r < options.runs; r++) {
|
||||
@@ -906,7 +908,7 @@ async function main() {
|
||||
};
|
||||
}
|
||||
|
||||
if ((options.scenario === 'all' || options.scenario === 'update-feature') && existsSync(path.join(treeBase,'presenter.js'))) {
|
||||
if ((wants('update-feature')) && existsSync(path.join(treeBase,'presenter.js'))) {
|
||||
console.log(` [Scenario: Update split-out presenter, including idle cache fill] running ${options.runs} iterations...`);
|
||||
const runs=[];
|
||||
for(let r=0;r<options.runs;r++) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"results": [
|
||||
{
|
||||
"browser": "chromium",
|
||||
"sourceBuildTag": "41a7ba2c29a3",
|
||||
"sourceBuildTag": "562f4031bcb7",
|
||||
"classicSharedDefaults": true,
|
||||
"cssOrderPreserved": true,
|
||||
"settingsSearch": true,
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
{
|
||||
"browser": "webkit",
|
||||
"sourceBuildTag": "41a7ba2c29a3",
|
||||
"sourceBuildTag": "562f4031bcb7",
|
||||
"classicSharedDefaults": true,
|
||||
"cssOrderPreserved": true,
|
||||
"settingsSearch": true,
|
||||
@@ -56,7 +56,7 @@
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:36117/api/version.",
|
||||
"message": "/127.0.0.1:33967/api/version.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
@@ -64,7 +64,7 @@
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:36117/api/recommendations?fp=163577c02a53bc40.",
|
||||
"message": "/127.0.0.1:33967/api/recommendations?fp=163577c02a53bc40.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
@@ -72,7 +72,7 @@
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:36117/api/version.",
|
||||
"message": "/127.0.0.1:33967/api/version.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
@@ -80,7 +80,7 @@
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:36117/api/recommendations?fp=163577c02a53bc40.",
|
||||
"message": "/127.0.0.1:33967/api/recommendations?fp=163577c02a53bc40.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
@@ -88,7 +88,7 @@
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:36117/api/version.",
|
||||
"message": "/127.0.0.1:33967/api/version.",
|
||||
"disconnected": true
|
||||
}
|
||||
]
|
||||
|
||||
101
perf/results/phase6-native-chromium-warm.json
Normal file
101
perf/results/phase6-native-chromium-warm.json
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"date": "2026-10-08T01:29:49.903Z",
|
||||
"frontendCommit": null,
|
||||
"sourceRoot": null,
|
||||
"sourceCommit": "c4a512bea63da4c9c875501038727768080496c1",
|
||||
"frontendBuildTag": "5fe61861d759",
|
||||
"commit": "c4a512bea63da4c9c875501038727768080496c1",
|
||||
"runsConfigured": 5,
|
||||
"browsers": {
|
||||
"chromium": {
|
||||
"lte": {
|
||||
"warm": {
|
||||
"requestCount": {
|
||||
"median": 4,
|
||||
"min": 3,
|
||||
"max": 5,
|
||||
"values": [
|
||||
5,
|
||||
4,
|
||||
3,
|
||||
4,
|
||||
3
|
||||
]
|
||||
},
|
||||
"wireBytes": {
|
||||
"median": 7869,
|
||||
"min": 97,
|
||||
"max": 7869,
|
||||
"values": [
|
||||
7869,
|
||||
7869,
|
||||
97,
|
||||
7869,
|
||||
7858
|
||||
]
|
||||
},
|
||||
"fcp": {
|
||||
"median": 140,
|
||||
"min": 120,
|
||||
"max": 152,
|
||||
"values": [
|
||||
152,
|
||||
148,
|
||||
120,
|
||||
120,
|
||||
140
|
||||
]
|
||||
},
|
||||
"lcp": {
|
||||
"median": 148,
|
||||
"min": 140,
|
||||
"max": 156,
|
||||
"values": [
|
||||
152,
|
||||
148,
|
||||
148,
|
||||
156,
|
||||
140
|
||||
]
|
||||
},
|
||||
"domContentLoaded": {
|
||||
"median": 398,
|
||||
"min": 391,
|
||||
"max": 406,
|
||||
"values": [
|
||||
404,
|
||||
398,
|
||||
396,
|
||||
406,
|
||||
391
|
||||
]
|
||||
},
|
||||
"bootDone": {
|
||||
"median": 414,
|
||||
"min": 411,
|
||||
"max": 420,
|
||||
"values": [
|
||||
418,
|
||||
414,
|
||||
411,
|
||||
420,
|
||||
412
|
||||
]
|
||||
},
|
||||
"longTaskTotal": {
|
||||
"median": 62,
|
||||
"min": 57,
|
||||
"max": 65,
|
||||
"values": [
|
||||
65,
|
||||
59,
|
||||
63,
|
||||
57,
|
||||
62
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user