我尝试在Laravel框架中使用 AJAX 调用来命中多个API。当我在浏览器中看到网络进程时。我看到第二个 AJAX 调用仅在第一个Ajax调用完成(返回响应)后执行(顺序)。
首次尝试:
$.ajax({
url: "/getVA",
type: 'GET',
async: true,
cache: true,
beforeSend: function() {
},
success: function(response) {
}});
$.ajax({
url: "/getVA",
type: 'GET',
async: true,
cache: true,
beforeSend: function() {
},
success: function(response) {
}});
结果:第二次/getVA在第一次getVA之后运行
第二次尝试:
async function makeAsyncApiCall(url, method, data) {
const response = await fetch(url, {
method: method,
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
});
return await response.json();
}
const apiRequests = [
{ url: '/getVA', method: 'GET' },
{ url: '/getVA', method: 'GET' },
{ url: '/getVA', method: 'GET' },
{ url: '/getVA', method: 'GET' },
{ url: '/getVA', method: 'GET' }
];
const promises = apiRequests.map(({ url, method, data }) => makeAsyncApiCall(url, method, data));
Promise.all(promises)
.then(responses => {
responses.forEach(response => {
console.log(response);
});
})
.catch(error => {
console.error(error);
});
结果:在我看来仍然是顺序的x1c 0d1x
- 第三次尝试 *
我在第一个选项卡(Dashboard)上点击了rest API,当我试图打开新选项卡并打开我的网页(PrivacyPolicy)的另一个页面时。隐私策略选项卡等待dashboard选项卡完成API加载,然后隐私策略选项卡加载成功
目标
目前,我有一个任务,上传文件到一个API。然后,有一个API来检查进度并同时更新进度。但在我的情况下,检查进度API挂起(基于浏览器网络),直到第一次上传返回响应。
在Laravel中有什么需要做的设置吗?或者是像Nginx或Apache这样的服务器设置?
1条答案
按热度按时间djp7away1#
这似乎是一些Chrome缓存怪癖/问题。目前看来可行的方法(Chrome 113.0.5672.127)是在服务器响应中添加以下头:
其中
max-age
是请求有效时间的秒数。我使用max-age=0
或max-age=1
得到了混合的结果,我不知道为什么它的工作方式会如此奇怪。即使只是在页面间导航时,您也会遇到这种奇怪的缓存行为。