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

标签 javascript next.js apollo vercel

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

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

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

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

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

最佳答案

我最终通过在 promise 中抛出一个包含我的请求的 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,
}

关于javascript - 使用 getStaticProps() 将 Next.js 部署到 Vercel 的速率限制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63730157/

相关文章:

react-native - Apollo 客户端: mutate is not a function

javascript - jquery动态按钮点击不工作

javascript - 如何判断 chrome 应用程序正在使用哪个操作系统?

javascript - NextJS Vercel 部署错误 Nested Middleware is not allowed, found : pages/_middleware

javascript - Apollo 客户端 - 使用对象列表中的缓存结果来响应对单个对象的查询

node.js - 如果设置为 20 秒或更长时间,则使用 keepAlive 会出现问题

javascript 和 jquery 插件一起用于 document.ready 函数

javascript - JPG转PDF Cordova插件

reactjs - filterValue.toLowerCase不是shadecn DataTableFacetedFilter中的函数

reactjs - 导入路径不能以 '.ts' 扩展名结尾。考虑导入 'src/theme.js'