推测规则可用于预提取和预渲染下一个网页导航,详情请参阅上一篇博文。这样一来,网页加载速度会快得多,甚至可以实现即时加载,从而大幅提升这些额外网页导航的核心网页指标。
调试推测规则可能很棘手。对于预渲染的网页,这一点尤为重要,因为这些网页是在单独的渲染器中渲染的,有点像隐藏的后台标签页,在激活时会替换当前标签页。因此,您无法始终使用常规的开发者工具选项来调试问题。
Chrome 团队一直在努力增强开发者工具对推测规则调试的支持。在这篇博文中,您将了解如何使用这些工具来了解网页的推测规则、这些规则可能无法正常运行的原因,以及开发者何时可以使用更熟悉的开发者工具选项,何时不能使用。
“预”字词的说明
有很多“预”字开头的术语容易混淆,因此我们先来解释一下这些术语:
- 预取:提前提取资源或文档,以提高未来的性能。本文介绍了如何使用 Speculation Rules API 预提取文档,而不是使用类似的旧版
<link rel="prefetch">选项(该选项通常用于预提取子资源)。 - 预渲染:这比预提取更进一步,它实际上会渲染整个网页,就好像用户已导航到该网页一样,但会将该网页保留在隐藏的后台渲染器进程中,以便在用户实际导航到该网页时随时可用。同样,本文档重点介绍的是较新的推测规则 API 版本,而不是较旧的
<link rel="prerender">选项(该选项不再执行完整的预渲染)。 - 推测性导航:由推测规则触发的新预提取和预渲染选项的统称。
- 预加载:一个过载的术语,可以指多种技术和流程,包括
<link rel="preload">、预加载扫描器和服务工作线程导航预加载。本文不会介绍这些内容,但会包含该术语,以便清楚地区分它们与“推测性导航”术语。
prefetch 的推测规则
推测规则可用于预提取下一次导航的文档。例如,当将以下 JSON 插入到网页中时,系统会预提取 next.html 和 next2.html:
<script type="speculationrules">
{
"prefetch": [
{
"source": "list",
"urls": ["next.html", "next2.html"],
"tag": "rule-set-tag-1"
}
]
}
</script>
与旧版 <link rel="prefetch"> 语法相比,使用推测规则进行导航预提取具有一些优势,例如 API 更具表现力,并且结果存储在内存缓存中,而不是 HTTP 磁盘缓存中。
调试 prefetch 推测规则
由推测规则触发的预取与其他提取一样,可以在网络面板中看到: