关键css内联必须紧贴之后,否则白屏不缓解;正确顺序为→→其他标签,中禁用@import和url(),体积控制在1–5kb。

关键CSS内联必须紧贴之后,否则白屏不缓解
很多人把
html-deploy
使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。
下载
正确顺序只能是:<meta charset="utf-8"> → <style></style> → 其他所有标签。任何插入其间的、
或<script>都会打断这个链路。
<ul>
<li><code><style>里禁止出现<code>@import,它会触发同步HTTP请求,等价于新增一个阻塞点
<li>内联体积建议控制在1–5 KB;实测超10 KB时,3G网络下TTFB延迟明显上升
<li>含<code>url()的规则(如背景图、字体)必须剔除,这些应交给<code><link rel="preload" as="image">或非关键CSS处理
<H3>preload必须出现在对应资源标签之前,且as属性不可省略
<p><code><link rel="preload">不是写上就生效。如果它出现在<code><link rel="stylesheet" href="main.css">之后,浏览器早已开始下载main.css,preload指令被忽略。
<p>字体preload尤其容易失败:Chrome 120+默认启用CORS检查,漏掉<code>crossorigin或<code>as="font"任一,控制台就会报<code>CORS error,字体加载中断。
<ul>
<li>CSS preload必须配<code>as="style" + <code>onload接管:<code><link rel="preload" href="non-critical.css" as="style" onload="this.rel='stylesheet'">
<li>字体preload必须同时带<code>as="font"和<code>crossorigin,即使同源也得加
<li>不要对含<code>@import的CSS文件preload——浏览器仍需发起新请求,预加载失效
<H3>script放head还是body?defer和async选错会导致DOM找不到
<p>把<code><script>扔进<code><body>底部看似安全,但现代SPA初始化逻辑依赖完整DOM结构,若脚本执行时<code><main>还没解析完,React/Vue实例就会挂掉。
<p>真正关键的是执行时机是否匹配依赖关系:
<ul>
<li>依赖首屏DOM节点的脚本(如初始化轮播、绑定按钮事件)→ 必须用<code>defer,它按顺序下载、在<code>DOMContentLoaded前执行
<li>无依赖的独立脚本(统计、错误上报)→ 用<code>async,下载完立即执行,不保证顺序
<li>绝对不要在<code><head>里放未加属性的同步script,它会卡住整个HTML解析
<H3>弱网下文本优先,靠的是HTML结构本身而非JS fallback
<p>很多项目以为加个<noscript>或骨架屏就能解决弱网问题,但真实瓶颈是:文本内容根本没写进初始HTML,或者被深层嵌套、空容器、冗余<div>拖慢了解析速度。
<p>真正的文本优先,意味着标题、副标题、第一段正文必须是静态HTML,位于<main>最顶部,且DOM层级尽量扁平。
<ul>
<li>禁用<code><template>或<code>data-*占位符;它们在JS未执行前就是空白节点
<li><main>内避免超过3层嵌套,6层以上在低端安卓机上可导致首屏文本延迟200ms+
<li>所有非首屏模块(侧边栏、footer)用<code><div data-lazy="aside">占位,由JS控制注入时机
关键路径优化不是堆砌技巧,而是对每个标签位置、每个属性值、每个资源加载时机做毫米级校准。最容易被跳过的细节,往往就是白屏多持续800ms的原因。
</script>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!