diff --git a/docs/tasks/TASK-home-first-load-fix-20261001.md b/docs/tasks/TASK-home-first-load-fix-20261001.md new file mode 100644 index 00000000..5b3fa595 --- /dev/null +++ b/docs/tasks/TASK-home-first-load-fix-20261001.md @@ -0,0 +1,39 @@ +# TASK · 首页早发请求被样式表挡住(首页首开修复单)· 2026-10-01 + +> 执行方:同一 fork 子代理(产品 2026-09-30 已授权「调用 subagent 执行」)。验收:Claude。 +> 分支 `codex/home-first-load-fix-20261001`,基线 `origin/staging`(≥ `e600cff5`)。沿用 BUG-1127,不新开号。 +> 母单:`TASK-home-first-load-20260930.md` T8。 + +## 1. 验收未通过的事实 + +部署 `e600cff5` 后,Claude 在 staging 线上用母单 §7 的方法复测(接口统一 600 ms,两次): + +| 次 | `/api/account` 等早发请求的发出时刻 | 揭幕 | +| --- | --- | --- | +| 1 | 2357 ms | 3844 ms | +| 2 | 3104 ms | 4240 ms | + +本地 `next start` 下同一脚本测得早发在约 50 ms 发出。线上早发没有明显早于首屏 JS,**T8 验收第 1 条不通过**。 + +## 2. 根因 + +线上 `/` 的 HTML `
` 里依次是 3 个 ``(位置 699 / 837 / 975),然后是异步 chunk,最后才是早发脚本(位置 5138,内联经典脚本)。按 HTML 规范,排在未加载完成的样式表之后的**内联经典脚本**要等这些样式表下载完才执行(script-blocking stylesheets)。本地样式表瞬间就到,所以测不出来;线上要多等 CSS 的下载时间。 + +## 3. 决策 + +- 早发逻辑、红线、消费方式都不变,只改脚本的装载方式,让它不再被样式表阻塞。 +- staging 没有 CSP(`curl -sI /` 没有 `Content-Security-Policy`),可以用 `data:` URL。 + +## 4. 做法(按顺序尝试,拿到实测证据后二选一) + +1. **首选**:`