预渲染 (Prerender) 是一种在后台预先完成页面渲染 (HTML 解析、CSS 应用、JavaScript 执行) 的优化技术,针对用户可能即将访问的页面提前处理。当用户实际点击链接时,已渲染完成的页面会立即呈现,体感上实现零延迟的页面切换。
Chrome 通过 Speculation Rules API 支持预渲染功能。在 HTML 中编写 <script type="speculationrules"> 标签,指定预渲染目标的 URL 模式,Chrome 会预测用户行为,对可能被点击的链接进行预渲染。
预渲染对于改善短链接的重定向体验尤为有效。通常点击短链接后需要经历 DNS 解析、TCP 连接、重定向响应、目标页 DNS 解析、页面加载等多个步骤。如果预渲染已生效,这些步骤均已提前完成,点击后页面即刻呈现。
预渲染的注意事项包括资源消耗问题。预渲染会在后台加载完整页面,消耗用户的网络带宽和设备内存。在移动环境下,数据流量的增加可能成为问题,因此应仅对高确定性的链接启用预渲染。
预渲染的渐进替代方案包括 dns-prefetch (仅 DNS 解析)、preconnect (DNS + TCP + TLS) 和 prefetch (仅下载资源),可根据资源消耗与效果的平衡灵活选用。相关书籍可在 Amazon 上查阅。