首页/文章/前端

图解Web渲染:一文看懂CSR、SSR、SSG、ISR、ESR、NSR

2024-09-23
13785 分钟
...

在现代Web开发中,了解不同的渲染模式对于提升用户体验和网站性能至关重要。本文将图文并茂地介绍几种主要的渲染方式:客户端渲染(CSR)、服务端渲染(SSR)、静态站点生成(SSG)、增量静态重建(ISR)、边缘侧渲染(ESR)和本地侧渲染(NSR)。

1. CSR(Client-Side Rendering客户端渲染)

CSR 模式下,浏览器向 CDN 请求静态 HTML 和 JS,JS 负责获取业务服务器数据并在浏览器中渲染页面。

这种方式不利于 SEO 和首屏渲染速度。

2. SSR(Server-Side Rendering服务端渲染 + 水合)

在 SSR 模式中,Web 服务器预先生成完整的 HTML 字符串,并将页面的初始状态返回给浏览器。浏览器加载完 JS 后,会对页面进行水合(hydration),使其变为可交互状态。

3. SSG(Static Site Generation静态站点生成)

SSG 模式下,Web 服务器在构建时通过业务服务器获取数据,并提前生成静态 HTML。生成的 HTML 被缓存到 CDN 上,用户请求时直接获取静态页面,无需业务服务器的参与。

4. ISR(Incremental Static Regeneration增量静态生成)

ISR 模式结合了 SSG 的静态页面生成和 SSR 的动态更新能力。初次加载时,静态 HTML 会被提供给用户,这种场景下静态 HTML 有可能是过期的,但 Web 服务器会在后台请求业务数据,增量更新 HTML。

ISR 其实属于 SSG 的一种扩展,唯一的区别就是需要判断内容是否过期,结合了 SSG 和动态内容更新的优势,支持对静态页面进行增量更新。

由于用户有可能看到的是过期页面,因此,使用这种模式,最好区分关键页面(热门页面)和非关键页面(冷门页面),对关键页面需要进行预热处理。

5. ESR(Edge Side Rendering边缘侧渲染 + 静态与动态结合)

在 ESR 模式中,CDN 不仅缓存静态资源,还可以在边缘节点执行部分动态逻辑,结合静态与动态渲染。静态内容直接从 CDN 提供,动态内容通过边缘节点请求业务服务器来渲染。

由于动态内容是在边缘节点上发起的,不需要重新建立 TCP 连接,且边缘节点可缓存上一次的最新 HTML 距离用户更近,因此,在边缘计算节点上处理渲染逻辑,减少延迟,提高响应速度。

上述返回的 HTML,准确的讲应该是一种流的形式。

这种模式好处是不少,但项目复杂度也会随之上升,除了了在 HTML 上做好动态标签的标记,还需做好路由配置,同时还需要提前考虑好容灾,做好降级渲染和兜底处理。

6. NSR(Native Side Rendering本地侧渲染)

NSR 模式下,Native 应用通过加载离线页面模板和预加载页面数据,使用 WebView 渲染生成的 HTML 页面,并将其缓存在客户端。该模式强调在客户端进行渲染,以提升性能和用户体验。

这种模式相当于将 SSR 放置在了客户端 APP 侧,一种另类的分布式 SSR,同时不增加Web服务端的压力。

至此,图文介绍 Web 的几种渲染方式到此结束。每一种方案都有其优势和劣势,因此一定要结合自己项目的实际需要,选择合适的解决方案。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
前端2026-07-17
HTML Form 可以把 POST 响应加载进 iframe
在接入支付验证、身份认证或第三方授权页面时,我们经常会遇到这样的流程: 1. 后端返回一个第三方接口地址。 2. 这个地址必须通过 请求访问。 3. 接口返回 HTML,或者重定向到真正的验证页面。 4. 验证页面需要嵌入当前网站,而不是打开新标签页。 5. 验证完成后,当前页面继续执行后续业务。 第一次遇到这个需求,很容易想到: 但涉及第三方支付时,这种方式通常会遇到 CORS、Cookie、重定向和跨域页面读取限制。 实际上,HTM...
学习
前端2026-05-29
前端判断一个网页是否允许被 iframe 内嵌
前端 不能 100% 准确提前判断 一个网页是否允许被 iframe 内嵌,因为决定权主要在目标网站返回的 HTTP 响应头 里,而普通前端 JS 通常读不到跨域页面的响应头。 核心判断看这两个东西: 1. 老一点但仍常见。 表示完全不允许被 iframe 嵌入。 表示只允许同源页面 iframe 嵌入。 以前有这个,但现代浏览器支持很差,基本不建议依赖。 2. 现在更推荐看这个。 表示不允许任何页面嵌入。 表示只允许同源嵌入。 表示只...
学习
前端2026-03-20
网页唤起 Android App 调试笔记(App Links)
  在最近的项目中,我遇到了 网页访问特定 URL 应该唤起 Android App,但实际只打开网页 的问题。通过调试和排查,整理出以下经验和步骤。 1\. 项目与环境信息(脱敏处理) 网站域名: 唤起页面: Android App 包名: intent filter 配置示例: assetlinks.json 已上线,包含 App 的 SHA256 签名指纹 2\. 问题现象 用户访问 页面时, 网页打开了,但 App 没...
学习
前端2026-03-02
深入理解 Cookie:安全属性、访问边界与渲染场景实践
本文系统梳理 Cookie 核心机制,聚焦 HttpOnly/SameSite 等安全属性 、 访问权限边界 、 CSR/SSR 差异 ,附关键代码示例与安全清单。适合开发查阅与知识沉淀。 一、Cookie 是什么?为什么需要它? HTTP 是无状态协议。Cookie 是服务端通过 响应头下发、浏览器自动存储并在后续 同源请求中携带 的小型文本数据(通常 ≤4KB),用于: 会话维持(Session ID) 用户偏好(语言/主题) 跨请...
学习
前端2026-03-02
退出登录时 Cookie 清除指南
核心结论 :登出 ≠ 单方面操作。HttpOnly 与非 HttpOnly Cookie 需 前后端协同清除 ,缺一不可。残留 Cookie = 安全隐患 + 用户体验漏洞。 🔒 为什么不能“一键清空”? 浏览器出于安全设计: 后端 :只能通过 响应头清除 自己设置过 的 Cookie(需属性完全匹配) 前端 JS :可读写非 HttpOnly Cookie,但 无法触碰 HttpOnly Cookie 无“清除全部”API :任何服...
学习
前端2025-12-15
懒加载图片在同一个 Item 中逐个出现的原因与解决方案
懒加载图片在同一个 Item 中逐个出现的原因与解决方案 适用场景 :使用原生 实现图片懒加载的动态列表,每个列表项(item)包含多张图片。 📌 问题描述 在开发一个动态渲染的列表时,每个 item 中包含三张图片,并使用 HTML 原生的懒加载属性: 观察到的现象: 开启懒加载时 :三张图片 不是同时出现 ,而是 从左到右(或从上到下)依次加载显示 ,有明显的时间差。 关闭懒加载(移除 )后 :三张图片 看起来是一起出现的 ,视觉...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录