Chrome的预渲染功能每次都被取消了。

14

我正在尝试Chrome的预渲染功能,但是当我检查网络时,我发现任何链接的请求都被取消了。

chrome developer console

我正在使用以下语法:

<link rel="prerender" href="http://example.org/index.html">

我在http://prerender-test.appspot.com/尝试了实时演示,并得到了相同的结果。为什么会这样?

更新(来源于https://developers.google.com/chrome/whitepapers/prerender):

在预渲染网站时,Chrome可能会遇到一些情况,这些情况可能导致用户可见的行为不正确。在这些情况下,预渲染将被静默地中止。其中一些情况包括:

  • 注意:这不是详尽无遗的列表。最近更新时间为11/10/11。

    1. 该URL启动了下载
    2. 页面中有HTML音频或视频
    3. POST、PUT和DELETE XMLHTTPRequests
    4. HTTP身份验证
    5. HTTPS页面
    6. 触发恶意软件警告的页面
    7. 弹出窗口创建
    8. 检测到高资源利用率
    9. 开发人员工具已打开
    10. 诸如Flash之类的插件将推迟其初始化,直到用户实际访问预渲染页面。

但问题是,我何时可以使用此功能?


演示中是否显示您已启用预渲染? - Dmitry Pashkevich
当然,否则它不会让你输入链接。 - Shlomi Schwartz
演示对我来说是有效的。你尝试在不同的机器上了吗? - Dmitry Pashkevich
现在尝试一下,可能是防火墙问题吗?(我是在工作中尝试的) - Shlomi Schwartz
2个回答

18

在这种情况下,听起来是因为你打开了开发者工具,预渲染请求被取消了。

如果您想查看更多有关请求被取消原因的信息,请复制并粘贴chrome://net-internals/#prerender到您的地址栏中,然后按回车键。

几乎所有未列在您从白皮书中复制的取消原因列表中的情况都应该支持预渲染。


2
如果开发者工具打开,为什么预渲染会被禁用? - Jeromy French
6
这导致了一种反常的情况——当开发者工具关闭时,我怎么知道预取是否正常工作?如果没有人在观察,那么预取的资源是否真的预取了呢?我想,只能凭信仰了。 - drewww
如果开发者工具导致它无法正常工作,我建议使用浏览器外部的工具(如Fiddler)来检查预取是否正常工作。 - Doctor Jones
可以看一下这个链接:https://developers.google.com/chrome/whitepapers/prerender?csw=1#debug - soktinpk
2
这是因为网页的预渲染发生在一个单独的后台标签页中(没有附加开发工具),当您访问预渲染页面时,浏览器会切换标签页(全部在后台进行),并且该标签页的内容已经在没有开启开发工具的情况下被渲染。因此,由于您需要开发工具来查看该页面,浏览器会再次加载它。 - vishalg

1

预渲染、预获取和开发者工具:

预渲染和预获取链接(这两个功能并不相同)在开启开发者工具时会被禁用(在大多数浏览器中:IE,Chrome,Firefox),因为它们都部分基于“缓存” - 实际上,“预获取”完全基于缓存和子资源,因为它的作用是将未来的内容(仅顶层)加载到缓存中,以便在导航到下一页时已经可用。 “预渲染”使用缓存,但还将整个页面呈现到后台的“隐藏标签”中。

当启用开发者工具时,当前页面不会“缓存”,因为大多数浏览器在开启开发者工具时默认禁用缓存。

要查看预渲染的效果并进行测试,最好的方法是使用任务管理器 - 一旦加载了当前页面,您将能够看到一个预渲染进程正在启动。

关于预渲染/预获取的所有需要知道的内容总结如下:这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接