有很多有用的特性,并且由于在使用静态站点生成时速度极快,它在其他预渲染框架中脱颖而出。但是,它缺少其他框架(主要是 Next.js)的工具来使用服务器端渲染根据请求渲染页面。Gatsby 听取了社区的意见,除了许多优化功能外,Gatsby 4 还带来了两个渲染选项:延迟静态生成 (DSG)和老式的服务器端渲染 (SSR)。
延迟静态生成 (DSG)
许多人在使用 Gatsby 时遇到的问题之一是构建时间太长。使用 SSG 时,构建页面和所有繁重的工作都必须在服务器上完成,这会随着站点页面的增长而导致构建时间变长。为了解决这个问题,Gatsby 开始只使用增量构建来构建新的或更改的页面,并将其他页面保留在缓存中。但是,没有缓存的第一个构建总是需要很长时间才能完成。增量构建非常有帮助,但它没有解决问题的根源,这就是延迟静态生成的用武之地。
Deferred Static Generations 与 SSG 实现的非常相似,但它更高效 台湾电话号码清单 并且具有不同的页面传递方法。在 DSG 中,您可以选择要“延迟”的页面,这意味着不与其余页面一起构建,而是在用户请求它们时构建。第一次请求后,该页面将在 CDN 中可用,并且与使用 SSG 生成的任何其他页面相同。当站点具有不值得在每个生产版本上构建的旧页面和未访问过的页面时,这非常有用。
如果您担心 DSG 会破坏您页面的 SEO,请记住使用 DSG 构建的页面仅在第一次被请求时表现为服务器端呈现,然后它们就像任何其他 SSG 页面一样。因此,根据 Gatsby 的说法,您的页面将在 99.9% 的时间内充当 SSG,而 Google 将以这种方式分析其 SEO。
您可能会注意到,DSG 需要一个正在运行的服务器来侦听用户请求并为以后的每个其他用户构建请求的页面。这是 Gatsby 中一项改变游戏规则的功能,因为 Gatsby 以无服务器 SSG 框架而闻名,但现在您可以将 SSG 与涉及服务器的其他呈现选项结合使用。即使它改变了后端结构——只有当你使用 DSG 或 SSR 时——它为开发人员提供了更大的灵活性来使用 Gatsby。
如果 DSG 使用服务器工作,那是否意味着 Gatsby 可以使用服务器在请求时呈现所有页面?绝对没错。这是 Gatsby 中期待已久的功能,也是唯一一个让许多开发人员选择其他预渲染框架而不是 Gatsby 的功能。如果您不知道,服务器端呈现包括在每次用户请求时构建一个页面。当页面内容取决于请求它的用户时,它非常有用,因此我们可以为每个用户提供静态和自定义页面。
是 等框架中日常使用的一项众所周知的功能最终实现了该功能。现在,使用 Gatsby 的开发人员有大量的选择来向用户提供页面,可以使用静态站点生成、延迟站点生成、服务器端渲染,甚至——如果你足够勇敢的话——客户端渲染。
了新的渲染选项外还带来了许多其他功能来提高性能和开发人员体验。如前所述 和静态站点的主要缺点之一是构建时间长。除了增量构建和 DSG 之外 还引入了并行查询运行以进一步减少构建时间。
您可能知道使用数据层对外部数据进行分组,然后将其查询到您的网站上。将内容源中的数据采购到数据层相对容易且快速。但是,从数据层查询数据并查询到页面的过程非常耗时。