前几天在 “静态还是非静态?” 中我说道
[…] 从 CDN 提供 HTML 服务是一项壮举。
我的意思是,从 CDN 提供诸如图像、CSS 和 JavaScript 等资源相当简单。整个行业多年来一直在这样做。具有 URL 的资源可以移动到 CDN 并从中提供服务。对该资源的更改通常通过更改 URL 来处理(例如,style.324535.css
、style.css?v=345434
或类似的),以便我们能够充分利用浏览器缓存。但是 HTML 则略有不同。我们 HTML 的 URL 是我们面向公众的网站的 URL,并且这些 URL 不会更改。
历史上,我们对这种情况表示“好吧”。我们的 Web 服务器将提供我们的 HTML,我们将在性能方面尽最大努力。但是 Jamstack 方法正在通过以下说法改变这一点:实际上,我们也将从 CDN 提供该 HTML。
Guillermo Rauch 将其称为“提升”,并将其比作 JavaScript 如何将声明提升到代码中更高的地方。Jamstack 将静态资源提升到托管堆栈中更高的地方。
然而,Jamstack 作为一种软件架构现在使得能够 将计算结果提升到边缘,紧邻您的访问者所在的位置。
Jamstack 的核心原则一直是 尽可能地预渲染(预计算),这使得静态网站生成变得突出。关键思想是,原本将在请求时间线中稍后发生的计算现在已转移到构建阶段,执行一次并供所有用户共享。
值得注意的是,提升会自动发生。可以提升的内容将被提升。但是需要服务器运行的内容(例如云函数和 API 内容)仍然可以这样做。更复杂的是,在我们与 Brian Leroux 的谈话中,Dave 和我讨论了如何将云函数执行的结果也放到 CDN 上并进行缓存。
通过 Cloudflare 等 CDN 服务运行网站是否会自动从 CDN 提供所有 HTML,或者这是否有所不同?
我一直在研究新的创业公司 SiteSauce,它可以根据需要/更改将整个 CMS 网站预渲染为静态文件。这样做有什么优缺点?