我目前使用getStaticPropsgetStaticPaths来构建静态HTML文件,但问题是每次构建时都会构建大约10k+的页面.我不知道如何保存getServerSideProps's构建的页面,根据文档,它说它在请求的时候构建它,这是我想要的,但它没有提到保存它的任何东西,比如getStaticProps.

推荐答案

您不能将getStaticProps个又称为SSR的页面"转换"为静态页面,但是您可以通过缓存构建页面所需的API请求来达到几乎相同的效果/速度.

如果你在Vercel上托管,你可以这样做:

res.setHeader("Cache-Control", "s-maxage=60, stale-while-revalidate=59")

从文档中:

这告诉我们的CDN价值在一秒钟内是 fresh 的.如果在下一秒内重复请求,则先前缓存的值仍然是最新的.响应中出现的报头x-Vercel-CACHE将显示值HIT.如果在1到60秒后重复请求,则缓存值将过时,但仍会呈现.在后台,将发出重新验证请求,以使用新值填充缓存.在刷新缓存之前,X-Vercel-CACHE的值将为STALE.

如果您的内容从不更改,您可以删除stale-while-revalidate并将s-max-age设置得非常高,这样响应将保持缓存状态,直到您下一次重新部署:

export async function getServerSideProps({ res }) {
  res.setHeader('Cache-Control', 's-max-age=10000000000')
  return {
    props: {
    }
  };
}

来源:https://vercel.com/docs/concepts/edge-network/caching

Javascript相关问答推荐

未捕获错误:在注销后重定向到/login页面时找不到匹配的路由

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

如何迭代叔父元素的子HTML元素

如何在不影响隐式类型的情况下将类型分配给对象?

变量在导入到Vite中的另一个js文件时成为常量.

如何在FastAPI中为通过file:/URL加载的本地HTML文件启用CORS?

如何在HTMX提示符中设置默认值?

FireBase云函数-函数外部的ENV变量

Django导入问题,无法导入我的应用程序,但我已在设置中安装了它

我不知道如何纠正这一点.

Pevent触发material 用户界面数据网格中的自动保存

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧

在不使用AJAX的情况下将JavaScript数组值传递给Laravel控制器?

使用JAVASCRIPT-使用If和Else If多次判断条件-使用JAVASRIPT对象及其属性

我正在为我的单选按钮在HTML中设置一个值.使用Java脚本,我如何才能获得该值?

如何根据获取的对象数量动态生成状态变量

是否在图表中计算线上的点坐标?

在特定区域的图像上 Select x和y,并在其上创建边框

在Java脚本/类型脚本中覆盖父构造函数中的默认值

App Script如何读取通过云函数传递的表单对象