可直接用 performance.getEntriesByType('resource') 筛选广告脚本,结合域名特征(如 doubleclick、taboola.com)、initiatorType 为 script 及各阶段耗时(DNS/TCP/SSL/响应/执行阻塞),定位其拖慢页面的真实环节,并关联 FCP/LCP 等核心指标验证影响。

可以直接用 performance.getEntriesByType('resource') 筛出广告类脚本,再结合加载耗时、DNS/TCP/SSL各阶段时间,定位其拖慢页面的真实环节。
识别广告脚本资源
第三方广告脚本通常有特征性域名或路径,比如包含 adtech、doubleclick、taboola、taboola.com、googleadservices.com、amazon-adsystem.com 等关键词。可在 Resource Timing 数据中过滤:
- 遍历
performance.getEntriesByType('resource')返回的所有资源条目 - 对每个条目的
name(即完整 URL)做字符串匹配或正则判断 - 保留
initiatorType === 'script'且匹配广告域名的条目,排除图片、字体等干扰项
提取关键性能阶段耗时
ResourceTiming 提供细粒度时间戳,可计算各阶段延迟:
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
-
DNS 查询耗时:
domainLookupEnd - domainLookupStart(若为 0,说明已缓存或复用连接) -
TCP 连接耗时:
connectEnd - connectStart -
TLS 协商耗时:
secureConnectionStart > 0 ? connectEnd - secureConnectionStart : 0 -
请求响应总耗时:
responseEnd - fetchStart -
执行阻塞影响:对比该脚本的
responseEnd与DOMContentLoaded时间差,差值大说明它拖慢了 DOM 就绪
关联首屏核心指标恶化
广告脚本不是孤立存在,要验证它是否实际损害用户体验:
立即学习“前端免费学习笔记(深入)”;
- 检查该脚本的
responseEnd是否晚于first-contentful-paint(FCP),若是,说明它在首屏渲染后才完成,影响较小;若早于但 LCP 仍延迟,可能是它触发了重排或同步注入 DOM - 观察是否存在
document.write或动态插入<script></script>的行为——这类脚本会中断 HTML 解析,直接拉长白屏时间,ResourceTiming 中可能表现为startTime异常靠前但responseEnd滞后 - 配合
PerformanceObserver监听longtask,看广告 SDK 执行是否引发 >50ms 的主线程阻塞
自动化采集与告警建议
线上环境可轻量集成监控逻辑:
- 在页面 onload 后 1 秒内执行采集,避免遗漏异步加载的广告脚本
- 只上报超阈值的广告资源:例如
responseEnd - fetchStart > 2000(2秒)或domainLookupStart === 0(未预连,首次访问开销大) - 将结果打点到日志服务,字段至少含:广告域名、总耗时、DNS 耗时、是否触发 longtask、所在页面路径


















