Node.js 第一次获取API调用的速度非常慢-节点JS、React、Express

Node.js 第一次获取API调用的速度非常慢-节点JS、React、Express,node.js,reactjs,performance,express,Node.js,Reactjs,Performance,Express,我有一个网站正在打电话到我的后端数据库。网站第一次调用API需要11秒,显然,这太长了。但是,如果我刷新页面并再次尝试,它会在不到一秒钟的时间内变得非常快 我试图找到一些解决方案,因此打开DevTools并发现: 由于某些原因,TTFB(到第一个字节的时间)需要10秒 如何在网站第一次调用RESTAPI时减少TTFB 下面是我使用Axios获取rest API的React代码: axios .get( "https://MY.API", {

我有一个网站正在打电话到我的后端数据库。网站第一次调用API需要11秒,显然,这太长了。但是,如果我刷新页面并再次尝试,它会在不到一秒钟的时间内变得非常快

我试图找到一些解决方案,因此打开DevTools并发现:

由于某些原因,TTFB(到第一个字节的时间)需要10秒

如何在网站第一次调用RESTAPI时减少TTFB

下面是我使用Axios获取rest API的React代码:

 axios
    .get(
      "https://MY.API",
      {
        headers,
      }
    )
    .then((response) => {
      this.setState({
        response: response.data,
      });
    })

    .catch((err) => {
      console.error(err);
    });
下面是我使用Express、Mongoose和MongoDB的后端代码

router.get("/", async (req, res) => {
  try {
    const response = await Model.find();
    res.json(response);
  } catch (err) {
    res.json({ message: err });
  }
});
我想说这是一段相当标准的代码。我不知道为什么TTFB这么多

我可以实施哪些技巧来减少最初的等待时间?这对我的用户来说很烦人


谢谢

您应该在花费时间的服务器上进行测量。只需在请求处理程序的每个部分注销时间,然后查看时间的去向。这一切都在
wait Model.find()
中吗?还是请求暂时没有发送给您?您的服务器是什么类型的主机配置?你必须自己收集这类信息才能知道在哪里寻找罪犯。好的。非常感谢。我要试试看!后端到底在哪里运行?例如,在Heroku free dyno上,需要唤醒正在睡觉的dyno时会出现延迟。@jonrsharpe Yes。我用的是Heroku,我用的是免费的dyno。我怎样才能完全消除睡眠时间?我需要买一个dyno吗?我在网上看到,如果你经常向它发送请求,你可以阻止它睡觉?好吧,那就这样吧。如果你想得到比免费服务更好的服务,请付费。例如,嗜好动态对象不会处于睡眠状态。您应该在服务器上测量花费时间的位置。只需在请求处理程序的每个部分注销时间,然后查看时间的去向。这一切都在
wait Model.find()
中吗?还是请求暂时没有发送给您?您的服务器是什么类型的主机配置?你必须自己收集这类信息才能知道在哪里寻找罪犯。好的。非常感谢。我要试试看!后端到底在哪里运行?例如,在Heroku free dyno上,需要唤醒正在睡觉的dyno时会出现延迟。@jonrsharpe Yes。我用的是Heroku,我用的是免费的dyno。我怎样才能完全消除睡眠时间?我需要买一个dyno吗?我在网上看到,如果你经常向它发送请求,你可以阻止它睡觉?好吧,那就这样吧。如果你想得到比免费服务更好的服务,请付费。比如说,嗜好者是不会睡觉的。