到 2017 年,一个典型页面会加载数十个第三方脚本,追踪脚本与用户正在等待的内容混在同一网络队列中。Firefox Quantum(版本 57)重写了其网络请求调度器,其中一项改动是利用追踪保护数据库来延迟追踪域脚本的加载,而页面仍在积极加载和渲染。Mozilla 工程师 Jan Bambas 称这项技术为“尾随”。

直接的做法是彻底阻止追踪器,但 Firefox 已有追踪保护功能,而且阻止会破坏依赖这些脚本渲染或运营的网站。另一个明显的选择是坐视不管,让分析和广告负载与真实内容争抢。尾随则取中间路线:不禁止任何东西,只是降低优先级。

仅在站点自有子资源仍加载期间,追踪域请求才被暂缓,且上限约为 6 秒。动态添加或异步加载的脚本可被延迟,而追踪图片、XHR 以及追踪脚本发起的任何请求始终会被延迟。因为 HTML 规范将下载调度和优先级交给浏览器决定,这一改动符合网络规则。对结构良好的网站,没有任何功能差异,因为它们显示的内容不取决于追踪器。

页面加载性能的提升来得诺干节省带宽、I/O 和 CPU 给图片、脚本等站点自身需要的资源。可见的代价由劣质网站承担:谷歌的 A/B 测试片段用 opacity:0 隐藏页面,直到来自 www.google-analytics.com 的脚本取消隐藏,可能导致页面空白 4 秒;而像 L'Équipe 这样用同步脚本调用 Twitter API 的网站,因为延迟的异步脚本还没到,就会失败。Bambas 认为这些网站只是侥幸运行,同样的竞态在隐私浏览或追踪保护下也会破坏它们。

延迟而非阻止:将追踪域的请求暂缓,直到页面自有资源加载完成后再释放

追踪器很少需要用于渲染页面,因此延迟它们可为站点资源释放带宽、I/O 和 CPU,同时不显著改变用户所见。

延迟而非阻止,使该功能符合 HTML 规范,并且不破坏分析或广告的经济性,仅仅是推迟。

追踪保护数据库已经对第三方域进行分类,因此调度器能获得优先级信号,而无需建立或维护新列表。

出问题的网站是依赖追踪器来渲染,或依赖一种只有追踪服务器响应快才能赢的赛跑;这类回归暴露了真实的脆弱,而非错误的权衡。

当无法移除代价时,重新安排它:将低价值任务推后至用户可见加载完成之后,无需争斗就能获得大部分收益

尾随随 Firefox 57 (Quantum) 发布。Bambas 2017 年 12 月的说明文章引发了 472 分、261 条评论的 Hacker News 话题,以及 Bleeping Computer 和 gHacks 等报道。Mozilla 记录的回归,包括谷歌隐藏页面片段导致页面空白长达 4 秒的问题,提交至 Bugzilla,Bambas 认为受影响的站点需要修复才能适应新调度。他补充说,更广泛的度量随后进行,本地测试显示收益淹没在噪声中,因此全面回报尚未量化。

从这里,追溯依据

参考来源

  1. Firefox 57 delays requests to tracking domains janbambas.cz
  2. Firefox 57 delays tracking domains ghacks.net
  3. Hacker News discussion: Firefox 57 delays requests to tracking domains news.ycombinator.com