Javascript 如何预取和使用JSON资源?
我想预取一个JSON资源,并在必要时在以后的JavaScript代码中使用它 我正在预取:Javascript 如何预取和使用JSON资源?,javascript,html,json,Javascript,Html,Json,我想预取一个JSON资源,并在必要时在以后的JavaScript代码中使用它 我正在预取: 但我不知道如何访问这个资源。在加载和缓存数据时,我认为fetch请求将使用缓存,但它正在向服务器发出第二个请求(我希望避免) //向服务器发送第二个请求,而不是使用缓存 fetch('/data.json')。然后(console.log); 您希望使用“预加载”而不是“预回迁”,如下所示: <link rel="preload" href="/data.json" as="fetch"/>
但我不知道如何访问这个资源。在加载和缓存数据时,我认为fetch
请求将使用缓存,但它正在向服务器发出第二个请求(我希望避免)
//向服务器发送第二个请求,而不是使用缓存
fetch('/data.json')。然后(console.log);
您希望使用“预加载”而不是“预回迁”,如下所示:
<link rel="preload" href="/data.json" as="fetch"/>
请参阅此线程上的答案:
还要查看mdn文档以进行预加载:我使用Chrome DevTools时启用了禁用缓存(当DevTools打开时)选项,因此
fetch
总是在不查看缓存的情况下向服务器发送新请求。禁用此选项后,将从缓存中正确检索资源
在上图(DevTools网络选项卡)中,第一行显示使用预回迁对服务器执行的请求:
第二行显示我已经执行了获取
,但是浏览器没有再次转到服务器,而是从缓存加载了资源
我通过以下方式访问了JSON文件:
//已预取data.json后在单击事件中执行
获取('/data.json')
。然后(响应=>{
如果(!response.ok){
抛出新错误(“HTTP错误”+response.status);
}
返回response.json();
})
。然后(json=>{
console.log(json);//做点什么
})
.catch(控制台错误);
抱歉,但我确定我想预取(下载将来可能需要的低优先级的内容)而不是预加载(强制浏览器下载高优先级的内容)。mdn提到预加载的优先级高于预取,但这对我来说很有意义-我不认为优先级比您想要的高-但是,或者,您可以编写一个fetch()
调用来随时执行,存储结果,然后在以后使用它-这是您可以手动管理的事情,并选择随时开始加载(可能在页面加载后)谢谢,但手动预取是我过去在另一个项目中做过的事情。我现在更喜欢使用现代的
自动预取。