快速链接

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费信用额度!

我们现在处于未来,因此,当然,我们正在研究通过超越典型方法(例如使页面更精简和像疯狂一样缓存)的奇特新策略来加快网页速度的方法。

一项来自几年前的策略是 InstantClick

在访问者点击链接之前,他们会将鼠标悬停在该链接上。 在这两个事件之间,通常会过去 200 毫秒到 300 毫秒(在此处进行自我测试)。 InstantClick 利用这段时间预加载页面,以便您点击时页面已经存在。

很聪明,但不像现代可以做到的那样先进。 例如,InstantClick 没有考虑到用户可能不想预加载他们没有明确要求的内容,尤其是当他们使用的是速度较慢的网络时。

Addy Osmani 撰写了一份文档,称之为“预测获取”

… 给定一个任意的入口页面,解决方案可以计算出用户访问给定下一个页面或一组页面的可能性,并在用户仍在查看当前页面时为其预取资源。 这有可能提高后续页面访问的页面加载性能,因为页面很有可能已经存在于用户的缓存中。

想象一下:我们可以将分析数据输入到组合中,并让机器学习对其进行分析。 Addy 还指出了其他先前尝试,例如 Gatsby 的 Link一个 WordPress 插件

另一个竞争者是 Google 的 Quicklink

Quicklink 试图使后续页面的导航加载更快。 它

  • 检测视窗内的链接(使用 Intersection Observer
  • 等到浏览器空闲(使用 requestIdleCallback
  • 检查用户是否没有使用慢速连接(使用 navigator.connection.effectiveType)或启用了数据节省功能(使用 navigator.connection.saveData
  • 将 URL 预取到链接(使用 <link rel=prefetch> 或 XHR)。 提供对请求优先级的某些控制(如果支持,可以切换到 fetch())。

那里没有使用机器学习或分析,但这可能是迄今为止最巧妙的。 我真的很喜欢只在使用可能性足够高时才预取的精神; 无论如何,浏览器都是空闲的,网络可以处理它。

直接链接 →