docs(home): first-load fix records — stylesheet-blocked early reads (BUG-1127)
Independent Staging Quality Gate / validate (push) Successful in 12m58s
Independent Staging Quality Gate / publish (push) Successful in 3m32s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-01 01:36:37 +08:00
co-authored by Claude Opus 5.5
parent c2265dabb2
commit ca1353ebe4
4 changed files with 22 additions and 0 deletions
+1
View File
@@ -15059,6 +15059,7 @@
- 防复发:冷启动新增的请求先问两件事:它依赖谁;能不能放进 HTML 早发。预取出来的列表必须带上「为谁取的」(人物、账户),对不上就丢弃。早发请求与正常请求共用 `boot-early-reads.ts` 里的常量。
- 相关记录:BUG-936、BUG-1021、BUG-1040、BUG-1104
- 修复版本:分支 `codex/home-first-load-20260930`(`ab656e0d` T1、`2fd1e2b0` T8)
- 部署后复测(2026-10-01,TASK-home-first-load-fix-20261001):staging `e600cff5` 上早发请求在 2357 / 3104 ms 才发出。原因是内联经典脚本排在 3 个样式表之后,按规范要等样式表下载完才执行(script-blocking stylesheets);本地样式表瞬间就到,所以测不出来。修复:改为 `<script async src="data:text/javascript;base64,…">`(`bootEarlyReadsScriptSrc()`,内容与原脚本逐字节相同),带 async 的外部脚本不受样式表阻塞,data URL 不需要网络往返;构建产物里 Next 保留了 `async` 和 data URL。验证:测量脚本新增 `--css-delay 1500`,本地 `next start` 下基线 `e600cff5` 早发在 1545 / 1558 / 1559 ms(均晚于第一个样式表放行 1528~1543 ms),修复版在 32 / 34 / 45 ms(均早于样式表);iPhone UA + 390×844 视口下 21 / 42 ms,揭幕后 `window.__jyotishaBootReads` 只剩 `startedAt`,四个早发结果都已被取用。真实 iOS Safari 未测(环境缺口,见真机清单第 8 步)。防复发:需要尽早执行、又不需要阻塞渲染的脚本,不要写成内联脚本放在样式表之后;本地测量加上 CSS 延迟开关再下结论。修复提交:分支 `codex/home-first-load-fix-20261001`。
## BUG-1128 | 每次部署后浏览器重新下载全部 JS 与宋体字体