使用按需构建器在 Jamstack 上构建博客平台
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
我与 Netlify 的开发者体验团队展开了一次小型讨论,并将其记录下来,供那些有兴趣并正在考虑构建更大规模服务的人参考。
这个问题
你会如何使用 Jamstack 构建一个博客平台?一个用户可以:
- 登录/登出
- 创建博客文章
- 将它们发布到各自的网址上以便分享(例如 blogplatform.com/cassidoo/mypost)
许多人认为,这就是服务器端渲染的优势所在,也是 Jamstack 的不足之处。
但是,菲尔·霍克斯沃斯却说了一些好话!
菲尔的回应
这个问题包含两部分:
1. Jamstack 能否为众多用户提供用户生成和以用户为中心的内容?
是的。app.netlify.com通过静态部署的应用外壳和面向超过 200 万用户及团队的 API 来实现这一点。它既动态又个性化。
但是……博客文章最好不要以 JSON 格式提供,因为 JSON 格式会在客户端渲染,就像app.netlify.com示例中的内容那样。所以,第二个问题……
2. Jamstack 能否为用户生成和以用户为中心的内容提供渲染后的内容?
直到按需建房(ODB)及其相关企业出现,才实现了规模化发展。
按需构建器是一种无服务器功能,它通过将内容分为两类来加快大型网站的构建速度:关键内容在构建时自动编译,延迟内容则根据用户请求构建。按需构建器支持网站增量式构建,并且可以与任何框架兼容。
现在看来,这种架构确实相当吸引人。它就像是我之前提到的Virtual Lolly示例的略微升级版,我们通过 ODB 添加了身份验证和渲染功能。
由于构建过程中生成的核心页面数量控制在几百个以内(例如,主要样板页面和用户界面页面,以及可能最受欢迎的几百篇博客文章页面),因此可以在几个小时的时间间隔内轻松重新部署,从而定期预先生成最受欢迎的文章和相关文章的“新鲜”视图,以满足需求。
以上所有架构目前均可行,但需要解决一个问题:在类似 `/posts/posts` 的 URL 上列出每个用户的最新文章/{USER}/POSTS。这需要 ODB 支持 URL 过期机制,以便在添加新文章时更新 URL。不过,该视图可以通过无服务器函数或边缘处理器实现。通过 ODB 访问博客文章页面本身没有问题(直到我们添加修改已发布文章的功能,届时将适用与上述相同的逻辑)。
谢谢你,菲尔!接下来呢?
哇!我喜欢学习,你呢?
如果您想了解更多关于按需构建器的应用、它们实现的架构、无服务器技术等等,以下是一些不错的入门资源:
- 使用 Netlify 的按需构建器,更快地构建大型网站:现已推出抢先体验版
- 分布式持久渲染 RFC
- 使用 Gatsby 的延迟静态生成 (DSG)
- 快速上手使用无服务器函数:免费课程
- 静态优先:预生成的 JAMstack 网站,并以无服务器渲染作为备选方案
