为了缩短用户的网页加载时间,Chrome 可能会在用户点击之前预提取 Google 搜索结果页和其他参与网站上的链接。
此功能依赖于 CONNECT
代理,该代理会向需要预提取的网站隐藏用户的 IP 地址。反过来,这会使连接建立过程自然而然地脱离网络管理员的视野。
与此同时,我们也认识到网络管理员可能需要过滤内容。因此,我们设计了一种机制,让网络管理员可以在用户点击预提取的链接时继续执行此操作。
内容过滤
为了保护用户隐私,Chrome 在预提取链接时不会发出任何可观测的 DNS 查找。如果用户前往预提取的链接,系统会从本地缓存中提取网页资源,而不会进行可观测的 DNS 查找。一个副作用是,当用户前往预提取的链接时,内容过滤可能无法按预期运行。
为了让网络管理员能够过滤这些预提取的导航中的内容,我们设计了一种信号机制,用于指示 Chrome 在用户点击预提取的链接时发出 DNS 查找。此 DNS 查找将以与未发生预提取时相同的时间和方式进行,从而为管理员提供相同的过滤内容的机会。在第二次 DNS 查找成功之前,Chrome 将暂停从缓存中加载预提取的资源。如果预提取失败,Chrome 将不会使用预提取的资源,而是会以常规方式加载网页。请注意,由于 Chrome 必须等待 DNS 查找完成,因此这会给用户带来性能损失。
信令机制的详细信息
对于未停用网页预加载的用户,Chrome 会在启动时或网络接口发生更改时异步发出对 dns-tunnel-check.googlezip.net
的 DNS 查找。
以下是 dns-tunnel-check.googlezip.net
检查的可能结果:
- 如果响应为
NXDOMAIN
或SERVFAIL
,或者返回了NOERROR
响应代码,但其中既不包含A
记录也不包含AAAA
记录,Chrome 会了解到网络管理员需要了解预提取网页的导航情况(请参阅预检模式)。 - 如果响应是任何其他值,Chrome 将直接使用预提取的资源,并且在用户前往预提取的网页时不会发出任何额外的 DNS 查找。
此检查的结果将一直有效,直到 Chrome 重新启动或网络接口发生变化为止。届时,系统会触发对 dns-tunnel-check.googlezip.net
的新 DNS 查找,结果可能会有所不同。
预检模式
在此模式下,在通过专用预提取代理导航到预提取的网页之前,Chrome 会针对相关网域发出 DNS 查找请求,并等待响应返回:
- 如果响应包含一组非空的 IP 地址,Chrome 将继续使用预提取的资源进行导航。
- 如果响应为
REFUSED
(首选)或NXDOMAIN
,Chrome 将不会继续执行导航,而是显示相关的 DNS 错误页面。