可以使用链接预取来缓存JSON API响应以用于以后的XHR请求吗?

bsa*_*bsa 14 html javascript google-chrome prefetch browser-cache

给定一个JSON API端点/api/config,我们试图<link rel="prefetch" href="/api/config">在HTML文档的头部使用.当Chrome访问HTML中的链接标记时,Chrome会按预期下载数据,但是稍后会通过XHR从我们的脚本再次请求数据.

服务器配置为允许缓存,并Cache-Control: "max-age=3600, must-revalidate"在标头中进行响应.当Chrome再次请求数据时,服务器会以304 Not Modified状态正确响应.

用例是这样的:将始终使用XHR(AngularJS解析,如果相关)从我们的单页面应用程序中的Javascript请求配置端点.但是,我们的脚本非常大并且需要很长时间才能解析,因此在解析完成之前不会请求JSON配置.预取将允许我们使用一些解析时间来从API端点获取和缓存响应,否则必须等待脚本加载.

Jen*_*ens 6

是的,您应该能够预加载 JSON阅读此处

fetch:通过 fetch 或 XHR 请求访问的资源,例如 ArrayBuffer 或 JSON 文件。

所以尝试这个语法:

<link rel="preload" href="/api/config" as="fetch">
Run Code Online (Sandbox Code Playgroud)

  • 我在 Chrome 的控制台中收到此消息。找到“https://localhost/api/config”的预加载,但未使用,因为请求凭据模式不匹配。考虑看看 crossorigin 属性。`我通过使用 `crossorigin="anonymous"` 解决了这个问题。 (2认同)