性能与速度阅读约 4 分钟

SSR、SSG 还是 ISR:根据时效性、缓存和用户需求来选择

从内容时效性、个性化和故障表现等方面比较渲染策略,再用你自己的工作负载进行基准测试。

请求时渲染、构建时渲染和重新验证三条渲染路径

简短回答

SSG 适合可以提前构建的内容;SSR 针对每个请求进行渲染;ISR 可以在复用已生成页面的同时对其进行刷新。请根据可接受的过期程度、权限和运维支持,按路由分别选择,然后衡量完整的体验。

不存在放之四海皆准的最快架构

无论 HTML 最初是如何生成的,靠近访客的缓存响应都可能很快。一个查询高效的服务端渲染页面,可能比一个发送过多 JavaScript 的静态页面更快。TTFB、内容时效性和响应速度是不同的属性。

这份比较是一个决策框架,而不是对客户系统的基准测试。框架版本、运行时、托管适配器、缓存配置、地理位置和数据访问方式,都会影响结果。

比较每种方式所做的工作

渲染方式及其运维上的取舍
方式 HTML 何时生成 适合的起步用途 需要仔细检查的地方
SSR 请求时生成,视缓存情况而定 需要身份验证或因请求而异的页面 源站工作量、超时和私有缓存的边界
SSG 访问之前,通常在构建时生成 稳定的内容页面和文档 构建时长和发布延迟
ISR 复用已生成的输出并进行刷新 可接受一定过期程度的公开内容 缓存失效、重新生成失败以及首次无缓存访问

当请求会改变结果时使用 SSR

账户页面和依赖权限的视图,通常需要在请求时做出判断。把身份验证和授权放在服务器端,并防止私有响应进入共享缓存。流式传输、数据缓存和精心设计的查询可以减少等待,但并不能免去测量的必要。

SSR 并不意味着特定的基础设施成本或必需的集群规模。这些需求取决于负载、每个响应的工作量以及扩展策略。

当发布可以先于访问完成时使用 SSG

预先构建的 HTML 可以通过普通的静态托管或 CDN 提供。对于变化可预测的内容,这是一个很好的起点。请检查一次真实的构建需要多长时间,以及编辑人员在发布前如何查看草稿。

并不是每个静态系统都会在每次编辑后重建所有页面;增量构建的行为取决于所用工具。除了页面渲染之外,还要测试图片处理、内容获取和部署时间。

当可以接受有限的过期时使用 ISR

ISR 把已生成的输出与重新生成结合在一起。在 Next.js 的 Pages Router 中,重新验证间隔允许在间隔过去之后,由后续请求触发刷新;它并不是一个能保证在某一秒准时提供新内容的定时器。重新生成期间,缓存的输出可能仍然可见。

请在你实际使用的托管平台上,验证首次访问、重新生成失败和按需失效的行为。API 名称和支持情况因路由方式和框架版本而异。不要假设边缘运行时与 Node.js 部署支持相同的重新生成功能。

公开的商品描述通常可以容忍一定程度的过期,但最终的价格、库存和支付决定,必须在交易流程中进行核实。绝不能让一个旧的缓存页面成为购买的唯一可信来源。

进行可复现的比较

  1. 在所有实现中使用相同的内容、图片和同等的交互行为。
  2. 记录框架版本、运行时、服务器区域、CDN、数据库区域和缓存策略。
  3. 分别测试冷请求和热请求,包括重新生成和源站故障的情况。
  4. 从多个地点、在真实的并发负载下进行测量;记录样本数量和延迟分布。
  5. 除了 TTFB,还要比较 LCP、传输字节数和交互跟踪。
  6. 与将来负责维护网站的团队一起,测试发布、取消发布、权限变更和回滚。

常见问题

可以混合使用多种策略吗?

可以。博客、商品目录和私有控制面板,可能有不同的渲染和缓存需求。请明确定义这些边界,并把运维模式的数量控制在团队能够测试的范围内。

企业博客最适合哪种渲染策略?

当内容变化可预测时,预先构建或已缓存的公开 HTML 通常是很好的起点。正确的选择还取决于预览、发布延迟、集成和维护。请对完整页面做基准测试,包括图片和交互工作,而不只是响应的第一个字节。

设置了 ISR 重新验证间隔,就能保证立即更新吗?

不能。行为取决于框架和部署方式。在上文所述的 Next.js Pages Router 模型中,间隔过后的请求可以触发重新生成,而之前生成的响应可能仍然可用。请测试刷新失败、首次无缓存访问和按需失效。

私有的账户页面能和公开文章使用同一个共享缓存吗?

私有或依赖权限的响应需要经过深思熟虑的边界,绝不能通过共享的公共缓存泄露出去。在返回受保护的信息之前,先完成授权。公开的内容页面和需要登录的账户页面,可以采用不同的渲染和缓存策略。

参考资料与延伸阅读

继续阅读

比较 Headless 与传统 WordPress,然后使用性能测量流程。

Paul Edward

作者:Paul Edward

资深全栈 Web 开发者,专注 PHP、Laravel、WordPress 和 AI 辅助的网站系统。

更多关于 Paul

Leave a Reply

Your email address will not be published. Required fields are marked *

正在加载快速验证…(需要 JavaScript)

继续阅读

项目需求表 第 1 步,共 2 步 · 工作内容

您想构建什么?

一段话就足够开始了。如果这不是适合我的工作,我会直说,并推荐更合适的人。

工作内容

请选择所有适用项。

平台

“不确定”也完全可以。

您想构建什么?它需要为使用它的人做到什么?就像平时说话那样写下来。

0 / 1200

两步完成,不到一分钟。