【问题标题】:Can an AJAX request utilize link prefetching?AJAX 请求可以利用链接预取吗?
【发布时间】:2015-07-17 07:08:56
【问题描述】:

众所周知,HTML5 引入了一种称为link prefetching 的标准化浏览器机制,如果浏览器确定没有网络活动,它允许在后台预加载选定 URL 的内容。通过在头部添加以下内容来使用它:

<link rel="prefetch" href="http://www.example.com/">

我很好奇这种机制是否也能可靠地用于XMLHttpRequest——从某种意义上说,如果我指定一个链接预取,然后稍后在同一个页面上发起一个 AJAX 请求,XHR 会是一个HTTP byte-range request,或者要求整个页面,有效地忽略部分预加载的页面?

英文:AJAX 请求是否也会受益于预加载或部分预加载的内容?

【问题讨论】:

  • 看起来工作正常,但您必须启用缓存。
  • 我做了一个测试,至少在 Chrome 中,它似乎忽略了 并从 AJAX 重新加载 URL。尝试启用和禁用缓存,得到相同的结果。

标签: ajax html prefetch


【解决方案1】:

排序答案

只要您执行 GET 请求(或 HEAD 请求),XHR 就会使用从预取中下载的数据。

如果在 XHR 时预取的文件仍在下载,则下载将采用标准优先级,并且 XHR 将在下载完成后返回(并非总是如此)

您可以(至少)在 Crome 开发人员工具的“网络”选项卡上观察所有这些

第一个 zip 来自预取,第二个来自 XHR 请求 绿色是等待,蓝色是下载。

您实际上可以看到 XHR 等待预取结束

【讨论】:

  • 不用说,如果浏览器不支持该功能,整个事情就变成了一个简单的XHR请求
  • 我无法在 Safari、Firefox 或 Chrome 中重现您的断言。您说哪个变体有效,它在 2020 年仍然有效吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
相关资源
最近更新 更多