eagerness: "moderate" 是悬停预渲染默认且安全的选择,因它要求鼠标停留超200ms才触发,兼顾防误触与及时性,并需配合 source: "document" 才生效。

为什么 eagerness: "moderate" 是悬停预渲染的默认且安全选择
它对应浏览器对用户意图的“合理确认”:鼠标在链接上停留超过 200ms 才启动预渲染,既避开手滑误触,又不会等到用户点下去才开始干活。这个延迟不是硬编码死的,而是浏览器根据设备性能、内存状态动态微调的——你写 "moderate",它就懂该等一等再动。
eagerness: "moderate" 必须配合 source: "document" 才能自动捕获页面链接
只写 "moderate" 不生效,必须明确告诉浏览器“从当前页面里找链接”。常见错误是漏掉 "source": "document" 或拼错成 "source": "documnet":
- 正确写法:
{"prerender": [{"source": "document", "eagerness": "moderate"}]} - 错误写法:
{"prerender": [{"eagerness": "moderate"}]}(缺source,整条规则被忽略) - 错误写法:
{"prerender": [{"source": "list", "urls": ["/page"], "eagerness": "moderate"}]}(source: "list"不响应悬停,只按 URL 列表静态触发)
悬停不生效?检查这三类常见拦截条件
即使规则语法正确,eagerness: "moderate" 也可能静默失效。浏览器会在以下情况跳过预渲染:
- 目标链接跨域(如
href="https://other-site.com"),直接忽略,不报错 - 链接含 query 参数且匹配敏感路径(如
/login?next=...、/checkout?step=1),防副作用 - 目标页 HTML 中包含
<meta name="prerender" content="no">或响应头Permissions-Policy: speculation-rules=()
想让部分链接更早响应?别改 eagerness,用 where 精准圈选
把所有链接都设成 "moderate" 很省事,但首页底部“隐私政策”和顶部“立即下单”不该一视同仁。用 where 加过滤条件,比全局调高 eagerness 更可控:
- 只对带
data-prerender属性的链接启用:"where": {"selector_matches": "a[data-prerender]"} - 只匹配产品详情页:
"where": {"href_matches": "^/product/\d+$"}(注意正则需用字符串字面量,^和$保证全路径匹配) - 排除 PDF 和锚点:
"where": {"href_matches": "^(?!.*\.(pdf|zip)$)(?!.*#).*$"}
真正容易被忽略的是:多个 prerender 规则共存时,浏览器按数组顺序匹配,**首个命中即停止**。把宽泛规则(如 href_matches: ".*")放在前面,后面精准规则永远没机会执行。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











