使用 getStaticProps() 将 Next.js 部署到 Vercel 的速率限制问题

Rate limit issue deploying Next.js to Vercel using getStaticProps()

使用 Next.js 连接到 Apollo,我有 50 个左右的非动态 URL 使用 getStaticProps() 获取数据。它工作得很好,我喜欢页面的加载方式。我面临的问题是,因为 Vercel 在构建时构建了这些页面的静态版本,所以我很快就达到了这些页面上使用的 API 的速率限制大约40个建成后。鉴于我无法控制这些速率限制,是否有任何方法可以在构建时限制每个 getStaticProps 到 space 中的数据调用?我的 getStaticProps 在每一页上看起来都是这样的:

export async function getStaticProps() {
  const apolloClient = initializeApollo()

  await apolloClient.query({
    query: XXXXXXX,
    variables: {handle: "XXXXXXX"}
  })

  return {
    props: {
      initialApolloState: apolloClient.cache.extract(),
    },
    revalidate: 1,
  }
}

一切正常,或者当我的页面较少并且没有足够的页面达到速率限制时。

我最终通过在承诺中抛出一个包含我的请求的 setTimeout 将我的请求限制了 100 毫秒。在生产构建期间完全按照预期工作。

const sleep = (milliseconds, apolloClient) => {
return (
    new Promise(function(resolve, reject){
        setTimeout(() => {
            const request = apolloClient.query({
                query: XXXXXX,
                variables: {handle: "XXXXXX"}
            });
            resolve(request);
        }, milliseconds)
    });
)

};

导出异步函数 getStaticProps() { const apolloClient = initializeApollo()

await sleep(200, apolloClient)

return {
  props: {
    initialApolloState: apolloClient.cache.extract(),
  },
  revalidate: 1,
}

}