服务器端渲染(SSR)

服务器端渲染 (SSR) 指在服务器上生成 HTML 内容并将其发送到客户端的做法。SSR 与客户端渲染相对,客户端渲染由客户端使用 JavaScript 生成 HTML 内容。这两种技术并非互斥,可以在同一个应用程序中结合使用。

静态网站可以被视为 SSR(并且可以使用 SSR 基础设施生成),但两者存在细微的差别。静态网站的内容是在构建时生成的,而不是在请求时生成的。静态网站通常根本不需要部署在服务器上,可以从CDN提供服务。

SSR/CSR 的区别对于具有动态内容的网站更有意义,例如实时更新或用户特定内容。在这些情况下,对于每个请求,服务器都会动态生成 HTML 内容,因为预生成所有可能的页面是不现实的。HTML 文件包含近乎完整的页面内容,任何 JavaScript 资产仅用于实现交互性。

SSR 的优点包括:

  • 可访问性:页面在没有 JavaScript 的情况下(在某种程度上)可用,例如,如果网络缓慢、用户禁用了 JavaScript,或者浏览器老旧导致 JavaScript 无法运行。然而,任何交互性或客户端逻辑将不起作用。
  • 对爬虫友好:搜索引擎、社交媒体爬虫和其他机器人可以轻松读取内容,而无需执行 JavaScript。请注意,主流搜索引擎能够执行 JavaScript,因此纯 CSR 网站仍然可以被索引,但社交媒体爬虫通常不能。
  • 性能:服务器可以提前知道需要哪些内容,并可以一次性获取所有必要数据,而 CSR 中客户端通常只有在渲染初始页面时才知道进一步的依赖项,从而导致一系列请求。

SSR 和 CSR 都有其性能权衡,并且可以混合使用 SSR 和 CSR 来结合这两种技术的优点。例如,服务器可以生成带有空占位符的页面骨架,客户端可以获取额外数据并根据需要更新页面。