nginx Laravel框架中的异步多HTTP请求( AJAX )

zengzsys  于 2023-05-28  发布在  Nginx
关注(0)|答案(1)|浏览(145)

我尝试在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这样的服务器设置?

djp7away

djp7away1#

这似乎是一些Chrome缓存怪癖/问题。目前看来可行的方法(Chrome 113.0.5672.127)是在服务器响应中添加以下头:

Cache-Control: max-age=3, must-revalidate

其中max-age是请求有效时间的秒数。我使用max-age=0max-age=1得到了混合的结果,我不知道为什么它的工作方式会如此奇怪。即使只是在页面间导航时,您也会遇到这种奇怪的缓存行为。

相关问题