Safari是否支持针对XMLHttpRequest的Link rel=preload请求头?
同源XMLHttpRequest在Safari中无法复用预加载资源的问题
我正尝试优化某网页的加载速度,该网页通过XMLHttpRequest从同源加载JSON数据。我已在网页响应中添加了Link HTTP请求头,配置如下:
Link: </api/endpoint>; rel=preload; as=fetch; crossorigin
此配置在Chrome中运行正常:API端点仅被请求一次(基于预加载指令),且能被XMLHttpRequest复用。
但在Safari中无法正常工作:API端点会被请求两次(一次来自预加载指令,一次来自XMLHttpRequest),同时控制台出现如下警告:
[Warning] The resource https://my-origin.com/api/endpoint was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it wasn't preloaded for nothing.
我尝试过多种Link请求头变体(不含crossorigin、含crossorigin=use-credentials),也为XHR对象设置了withCredentials=true,但均无效果。
我查阅相关资料了解到,使用mode: "no-cors"可预加载fetch请求,但XMLHttpRequest无法设置该模式。
请问能否在Safari中预加载同源XMLHttpRequest?
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

