Reactjs Apollo应用程序中的GraphQL查询会触发数百个重复请求

Reactjs Apollo应用程序中的GraphQL查询会触发数百个重复请求,reactjs,heroku,graphql,next.js,apollo,Reactjs,Heroku,Graphql,Next.js,Apollo,我有一个使用Next.js和Apollo的React应用程序,在将其部署到Heroku后,我遇到了应用程序挂起并崩溃的问题。我发现GraphQL查询(而不是突变)是罪魁祸首:当一个查询触发时,我可以看到Heroku的日志,即应用程序的服务器端被数百个看似冗余的POST请求淹没(下面显示了一个请求示例)。当一次触发多个查询时,大量的活动可能会使应用程序崩溃 我能做些什么来解决这个问题 以下是更多信息,希望能有所启示: 查询成功地从GraphQL服务器接收数据 Apollo中的突变和局部状态查询不

我有一个使用Next.js和Apollo的React应用程序,在将其部署到Heroku后,我遇到了应用程序挂起并崩溃的问题。我发现GraphQL查询(而不是突变)是罪魁祸首:当一个查询触发时,我可以看到Heroku的日志,即应用程序的服务器端被数百个看似冗余的POST请求淹没(下面显示了一个请求示例)。当一次触发多个查询时,大量的活动可能会使应用程序崩溃

我能做些什么来解决这个问题

以下是更多信息,希望能有所启示:

  • 查询成功地从GraphQL服务器接收数据
  • Apollo中的突变和局部状态查询不会导致相同的结果 洪水;他们工作正常
  • 在浏览器中,开发工具中的“网络”选项卡不显示POST请求 发生在前端域;只有通常的GET请求(和 对GraphQL服务器域的请求)
  • 我在本地开发中没有发现同样的问题
  • 请求如下所示:

     2020-04-20T05:04:21.861390+00:00 heroku[router]: at=info method=POST path="/" host=recipe-market.herokuapp.com request_id=7ac33b80-59cc-4893-a8c0-5224dd2906b9 fwd="(My IP address here),18.205.161.72" dyno=web.1 connect=0ms service=79ms status=200 bytes=1151 protocol=https
    
  • …洪水中的每个后续请求都是相同的,包括请求ID,除了
    fwd
    字段中的第二个地址重复,例如:
    fwd=“(此处为我的IP地址),18.205.161.72,18.205.161.72”
    …它会重复,直到在
    fwd
    字段中有大约300个第二个地址的副本

  • 请求的洪流似乎不是无限的;大约在300点停。我测试过的所有查询都会触发相同数量的请求

通过使用NeX.js的自定义服务器来处理带有状态405响应的POST请求,从而阻止了洪水,我为此提供了一个创可贴。在这个过程中,我了解到POST请求是GraphQL查询;我仍然不知道为什么前端应用程序的服务器端正在接收它们。我用NeX.js的自定义服务器来处理这个问题,用状态405响应来处理POST请求,从而阻止了洪水。在这个过程中,我了解到POST请求是GraphQL查询;我仍然不知道为什么前端应用程序的服务器端会收到它们。