Appearance
从输入 URL 到页面可见:导航、网络、解析与首次绘制
主题边界
- 这道题真正考的是:浏览器导航、网络连接、HTML 解析、子资源发现和渲染流水线怎样串成一条主链。
- 如果只按步骤流水账回答,通常会缺掉缓存、解析阻塞、首屏指标或 CSR/SSR 差异。
机制与流程
- 浏览器先解析 URL,检查缓存、Service Worker、HSTS 和已有连接,再进入 DNS、TCP/QUIC、TLS 与 HTTP 请求。
- HTML 响应到达后,parser 与 preload scanner 并行工作:前者构建 DOM,后者提前发现样式、脚本和图片等资源。
- CSS 会阻塞首屏渲染,普通 script 会阻塞 HTML 解析;准备好足够的 DOM/CSS 信息后,浏览器才会进入首次布局和首次绘制。
关键差异
- “拿到 HTML”不等于“页面可见”;解析、样式计算、脚本执行和资源下载都可能推迟首屏。
- CSR 与 SSR 的差异在于首屏 HTML 是否已有内容,以及后续 hydration 成本如何分布。
边界条件
- 不是所有脚本都等价阻塞,关键在脚本类型、执行时机和依赖关系。
- DNS、TCP、TLS、HTTP、解析、绘制是不同阶段,不能全部统称为“加载很慢”。
工程落点
- 首屏优化必须跨层做:连接建立、资源提示、缓存策略、关键 CSS、脚本拆分和主线程执行体积都要一起看。
- 排查白屏或慢启动时,网络瀑布图和主线程 Performance trace 必须同时分析。