链接预取可用于缓存JSON API响应,以供以后的XHR请求使用
Can link prefetch be used to cache a JSON API response for a later XHR request?
给定JSON API端点/api/config
,我们尝试在HTML文档的头部使用<link rel="prefetch" href="/api/config">
。当Chrome点击HTML中的链接标签时,它会按预期下载数据,但大约一秒钟后,它会通过XHR从我们的脚本中再次请求。
服务器配置为允许缓存,并在标头中使用Cache-Control: "max-age=3600, must-revalidate"
进行响应。当Chrome再次请求数据时,服务器会以304未修改状态正确响应。
用例是这样的:在我们的单页应用程序中,配置端点将始终使用XHR(AngularJS解析,如果相关的话)从Javascript请求。然而,我们的脚本非常大,解析需要很长时间,因此在解析完成之前不会请求JSON配置。预取允许我们使用部分解析时间从API端点获取和缓存响应,否则这些端点将不得不等待脚本加载。
是的,您应该能够在此处预加载JSON Read。
fetch:fetch或XHR请求要访问的资源,例如ArrayBuffer或JSON文件。
所以试试这个语法:
<link rel="preload" href="/api/config" as="fetch">
来自MDN:
链接预取是一种浏览器机制,它利用浏览器空闲下载或预取用户可能访问的文档的时间在不久的将来。
IMO,在用户需要数据进行未来导航之前为其预取数据,与在用户导航到图像之前预取图像非常相似
另一种方法可以使用web工作者,在并行线程中获取数据。
相关文章:
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 通过XHR请求将MYSQL数组从PHP返回到Javascript
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- XHR请求的CSRF预防
- onReadyStateChange未在XHR请求的IE中激发
- 终止所有正在进行的XHR请求
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在使用量角器进行e2e测试时记录xhr请求
- Angular在不触发摘要的情况下执行XHR请求
- 如果我使用xhr请求,那么ajaxComplete的等价物是什么
- 总是在XHR请求中附加一些内容
- 同时发出的最大 xhr 请求量
- Dojo 两个 XHR 请求和回调函数仅在两者完成时触发
- 我可以/如何显式终止长时间运行的 xhr 请求
- 服务工作线程是否可以响应同步 XHR 请求
- 如何将 xhr 请求转换为角度$http请求
- 如何捕获任何 XHR 请求
- 如何显示 XHR 请求的加载图标
- 发送 XHR 请求而不接收任何数据
- 不能返回“结果”xhr.然后(& # 39;dojo /请求/ xhr # 39;)