文章里嵌了一个 YouTube iframe,移动端 LCP 4.1 秒,光这个 iframe 就带了 1.2MB 脚本,正文大图排在它后面才加载。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

<div class='yt' data-id='VIDEO_ID' style='aspect-ratio:16/9'>
  <img src='https://i.ytimg.com/vi/VIDEO_ID/hqdefault.jpg' alt='视频封面' loading='lazy'>
</div>

iframe 一进视口就加载播放器全套资源,包含十几个脚本和字体,和首屏图片抢带宽。没加 loading=lazy 时连屏幕外的视频也会一起加载。这一点先确认清楚,后面就不用反复试。

碰到「YouTube 嵌入性能」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

具体做法是,先加 loading=lazy 只加载视口内的;再用封面图加播放按钮做 facade 点击后才注入 iframe;占位块固定 16:9 避免点击后跳动。

改完照着核一遍,首屏不再请求 YouTube 脚本,LCP 降到 2.2 秒,点封面后视频正常播放。

作者 9823189