我网站上的JavaScript加载了几个JSON来初始化自己.
我想预加载它们,当JavaScript将在其上启动Ajax请求时,它们将立即加载.
link
为此存在新标签.
我试着用它来加载像这样的JSON:
但是,Chrome似乎加载了两次并在控制台中显示警告:
资源test.json是使用链接预加载预加载的,但是在窗口加载事件的几秒钟内没有使用.请确保没有预装任何东西.
所以似乎preload对JSON不起作用.实际上,我在规范中没有找到对JSON的引用.
这是正确的还是我做错了?
根据https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content,您必须添加as="prefetch"
JSON文件.所以你的代码变成了
所有现代浏览器都支持它,并且如果在几秒钟内没有使用该资源,则会收到警告消息,因为在这种情况下"延迟",双重加载等"预加载"它会适得其反.
它与预测未来的导航并不广泛支持不同.
关于此的Chrome插图文章:https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf
如果您和我有同样的问题,则可能是通过发送您的响应,使用发送Vary: Accept
了预加载请求,使用发送Accept: */*
了fetch / xhr请求Accept: application/json
。
似乎Accept:
无法更改预加载行为(叹息),因此您必须删除Vary: Accept
或使用匹配的Accept:
标头发出fetch / xhr请求。