reactjs - 静态站点生成页面 (SSG) 与非 SSG 页面加缓存相比有何优势?
问题描述
Next.js最近发布了 9.3 版,它支持在构建时生成静态站点。本质上,提供的新方法之一是getStaticProps
在构建时获取数据。
我的问题是,如果我使用 CDN(例如 AWS Cloudfront),使用这种工作流程有什么优势?即使页面是根据每个请求动态构建的(就像在getInitialProps
旧的 Next.js 版本中一样),页面仍然会被 Cloudfront 缓存并非常快速地返回。所以我想知道现实世界的用例是什么,getStaticProps
因为任何严肃的网站都已经使用 CDN。我了解该技术主要面向 CMS 网站,但即使在这些内容中,同一资源上的内容也可能会定期更改(例如,文章有语法错误,必须更正),并且页面可以动态更改而不是每次构建是一个优势时间。
解决方案
我们在生产环境中对此进行了很多讨论,并且正在升级到 9.4 以启用 SSG 在大型企业级站点中在我们的 CDN 后面创建的页面。''
这是我们的推理
我们在正常的日子里卸载了大约 98% 的流量,但即使是 2% 的流量流入源站也会造成严重破坏,具体取决于请求的资源和流量,确定我们的源站大小成为一场噩梦,因为事情会受到季节性影响。我们看到人们一直在输入错误的网址,包括广告活动、电子邮件链接等。
CDN 失效在我们的用例中每天都会发生,例如:服务器端呈现的通用内容组件可能会影响多个页面但不会影响整个站点,在这种情况下,不受影响的页面可以由具有静态优化的源返回.取决于内容是什么,例如:HTML 页面上的内联样式,我们可能必须刷新 CDN 上的所有 HTML。
TL;博士
静态生成页面意味着源可以智能地重放页面而无需处理关键资源。这取决于您的规模和您正在玩的流量。
推荐阅读
- time - hive 将 PHT 时间转换为 UTC
- matlab - 如何为 MATLAB 中的内置函数求解 x?
- arrays - 我想显示多个数组
- php - Laravel 中间件使用路由重定向
- php - docker中的Mysql驱动程序已安装但无法正常工作
- java - 带有 Main.Dart 与 .java 的 Flutter Example Starter 代码
- c# - 在 netcore 控制台应用程序中使用 Web 服务器进行简单路由
- date - 当xAxis的类型是时间时,如何使时间像'YYYY-MM-dd HH:mm:ss'?
- python - 是否可以在 python 脚本中指定模块的搜索路径?如果是,我该怎么做?
- node.js - 库更新时的 Git 消息类型