typescript 当尝试在Next.js中加载动态路由时,“此无服务器函数已超时”13

kuhbmx9i  于 2023-10-22  发布在  TypeScript
关注(0)|答案(1)|浏览(123)

我有一个简单的Next.js应用程序,它有一个像这样的路由结构:

  • /contentA/-静态-首次负载:103千字节
  • /contentA/[paramA]/groups- SSG -第一次加载:120千字节
  • /contentB/[paramA]/[paramB]/[paramC]- SSR(返回客户端组件)-第一次加载:103千字节

我把应用程序部署到Vercel的Hobby计划中。当我直接访问路由/contentB/[paramA]/[paramB]/[paramC]或尝试刷新页面时,我会得到“This Serverless Function has timed out”错误,因为对应的Serverless Function超过了默认的10 s限制。它不会每次都发生,但仍然会持续发生。
我试图通过使用动态导入来优化第一次加载时间,以减少JS文件的大小,虽然我已经设法减少了大约50%,但它似乎仍然没有帮助。
当我访问路由时,有一个fetch请求被执行,但它不可能是瓶颈。它几乎立即返回响应。
但是,当我尝试使用Next.js导航的链接访问页面时,即/contentA/-> /contentA/[paramA]/groups-> /contentB/[paramA]/[paramB]/[paramC],该页面的加载时间非常快,整体体验非常流畅。
有人能帮助我理解为什么重新加载页面或第一次访问页面时,该路由的加载时间需要这么多时间吗?有没有什么方法可以让它更稳定或更稳定?
我使用的是Next.js 13.5.5。

dgiusagp

dgiusagp1#

这听起来像Vercel的无服务器的冷启动,可能每次都会延迟第一次调用。这是在一段时间没有使用后再次启动应用程序所需的时间,从Vercel方面节省了一些成本。
以下是Vercel降低冷启动性能的一些官方指南:https://vercel.com/guides/how-can-i-improve-serverless-function-lambda-cold-start-performance-on-vercel
此外,在下面的AWS博客文章中,您可以找到AWS Lambda的一些架构设计以及为什么会发生冷启动:https://aws.amazon.com/blogs/compute/operating-lambda-performance-optimization-part-1/

相关问题