Skip to content
扫码开始移动端阅读
网页渲染方式分析
共
2086
字 需要≈
10.43
分钟 JavaScript
web
SSR
SSR
SSR全称是Server Side Rendering,代表的是服务端渲染。与客户端渲染不同的是,SSR输出的是一个渲染完成的HTML,整个渲染过程是在服务器端进行的。例如传统的JSP、PHP、Nuxt.js都是服务端渲染。
SSR优缺点
优点
- 🌐 有利于SEO: 由于页面在服务器生成,搜索引擎直接抓取到最终页面结果。
- 🚀 有利于首屏渲染: HTML所需要的数据都在服务器处理好,直接生成HTML,首屏渲染时间变短。
缺点
- 🔨 占用服务器资源: 渲染工作都在服务端进行,可能占用较多服务器资源。
- 🐌 用户体验不佳: 每次跳转到新页面都需要重新服务端渲染整个页面,不能只渲染可变区域。
示例技术 Next Nuxt Angular Universal
- Next.js: 一个React框架,支持SSR,使得React应用可以在服务器端进行渲染,提高了性能和SEO。
- Nuxt.js: 一个Vue框架,专注于Vue应用的SSR,提供了简单配置和插件系统,便于构建服务端渲染应用。
- Angular Universal: Angular官方的SSR解决方案,允许在服务器端渲染Angular应用,提供更好的性能和SEO支持。
BSR
BSR
BSR全称是Browser Same Rendering,代表的是浏览器同构渲染。BSR是一种前端技术,通过在服务器端和客户端同时执行JavaScript代码,以提高Web应用程序的性能和用户体验。
BSR优缺点
优点
- 🚀 性能提升: 通过在服务器端和客户端同时执行JavaScript,提高Web应用程序的性能。
- 🔄 同构渲染: 服务器端和客户端使用相同的渲染代码,确保一致的渲染结果。
- 🌐 有利于SEO: 由于在服务器端进行渲染,有利于搜索引擎抓取页面内容。
缺点
- 🔨 构建和维护成本较高: 同构渲染需要保持服务器端和客户端的代码一致,可能增加构建和维护的成本。
- ⚠️ 客户端运行时复杂性: 部分渲染逻辑需要在客户端执行,增加了客户端运行时的复杂性。
- 🔄 首屏加载相对较慢: 首次加载时需要在服务器端进行渲染,可能导致首屏加载速度较慢。
示例技术:Next.js
- Next.js: 一个React框架,支持BSR,提供了同构渲染的能力,使得服务器端和客户端可以共享相同的代码逻辑。
SSG
SSG
SSG全称是Static Site Generator,代表的是静态站点生成器。SSG是一种用于构建静态网站的工具,通过在构建时生成HTML文件,将内容提前渲染并缓存,以加速网站加载速度。
SSG优缺点
优点
- 🚀 构建速度快: 由于提前生成HTML文件,使得网站加载速度较快。
- 🔢 适用于静态内容: 对于内容不经常变化的网站,SSG是一个高效的选择。
- 🌐 安全性增加: 生成的是静态文件,减少了动态渲染时的一些安全性隐患。
缺点
- 🔨 构建和部署复杂性: 在某些情况下,构建和部署静态站点可能会变得复杂,尤其是在项目庞大复杂的情况下。
- 🔢 不适用于动态内容: 需要重新构建整个站点以更新内容,对于经常变化的内容,不太适用。
示例技术:Gatsby、Hugo、Vite
- Gatsby: 基于React的静态网站生成器,支持SSG,提供了丰富的插件生态系统。
- Hugo: 快速、现代的静态网站引擎,支持SSG,采用Go语言编写,构建速度极快。
- Vite: 一个由Vue.js官方维护的前端构建工具,支持Vue应用的SSG,具有快速的开发和热更新能力。
CSR
CSR
CSR全称是Client Side Rendering,代表的是客户端渲染。CSR是一种前端技术,通过在浏览器中使用JavaScript动态渲染内容,使Web应用更加交互且响应迅速。
CSR优缺点
优点
- 🏆 提供更丰富的交互体验: 通过在客户端动态渲染内容,提供更丰富的交互体验。
- 🌐 前后端分离: 前端和后端可以独立开发,提高了开发效率。
- 🔄 无需页面刷新: 用户切换页面时无需重新加载整个页面,减少了加载时间。
缺点
- 🐌 首屏加载速度相对较慢: 首次加载时需要在客户端进行渲染,相对较慢。
- 📉 SEO难度增加: 由于搜索引擎难以爬取动态生成的内容,对SEO不友好。
- 🔧 复杂的路由管理: 随着应用复杂性的增加,需要更复杂的路由管理来确保良好的用户体验。
示例技术:React、Vue、Angular
- React: 用于构建用户界面的JavaScript库,支持CSR,提供了虚拟DOM技术以提高渲染性能。
- Vue: 渐进式JavaScript框架,支持CSR,简单易学,适合快速开发。
- Angular: 一款完整的前端框架,支持CSR,提供了强大的工具和功能,适用于大型应用的开发。
ISR
ISR
ISR全称是Incremental Static Regeneration,代表的是增量静态再生。ISR结合了SSR和CSR的优点,首屏使用SSR,在客户端使用CSR进行进一步的交互渲染,实现更好的性能和用户体验。
ISR优缺点
优点
- 📈 结合了SSR和CSR的优点: 既有利于SEO又提供了良好的交互体验。
- 🌐 灵活的页面更新: 允许在不重新构建整个站点的情况下更新特定页面,提高了灵活性。
- ✅ 自动化更新: ISR允许在一段时间后自动重新生成静态页面,确保内容的实时性。
缺点
- ⚙️ 实现较为复杂: ISR的实现相对复杂,可能增加开发难度。
- 🔄 首屏加载相对较慢: 与CSR相比,首屏加载时仍需要依赖服务器生成的HTML。
- ⏰ 不适用于实时性要求高的场景: 对于需要实时性较高的内容,ISR的自动更新可能无法满足要求。
示例技术:Next.js
- Next.js: 一个React框架,提供了ISR的支持,使得构建和维护具有增量静态再生特性的SPA更加便捷。
SPA
SPA
SPA全称是Single Page Application,代表的是单页面应用。SPA是一种Web应用程序架构,通过动态地更新页面而不重新加载整个页面,提供更流畅的用户体验。
SPA优缺点
优点
- 🚀 提供更流畅的用户体验: 通过动态更新页面,提供更流畅的用户体验。
- 🌐 前后端分离: 前端和后端可以独立开发,提高了开发效率。
- 📉 减少服务器负担: 由于只需加载一次页面,减少了对服务器的请求压力。
- 🔄 无需页面刷新: 用户切换页面时无需重新加载整个页面,减少了加载时间。
缺点
- 📈 SEO难度增加: 由于只有一个HTML文件,搜索引擎难以索引SPA中的特定内容。
- 🔨 初次加载较慢: 初次加载时需要下载整个应用,加载时间相对较长。
- 🔧 复杂的路由管理: 随着应用复杂性的增加,需要更复杂的路由管理来确保良好的用户体验。
使用SPA技术开发的一些技术栈
- React: 使用React框架进行组件化开发。
- Vue: 利用Vue框架实现响应式数据绑定。
- Angular: 使用Angular框架提供的模块化和依赖注入。
技术总结
技术 | 首屏加载 | 用户体验 | 前后端分离 | 生态 | SEO | 开发难度 |
---|---|---|---|---|---|---|
SSR | ✅ | ✅ | ✅ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⚠️⚠️ |
CSR | ⚠️ | ❌ | ✅ | ⭐⭐⭐ | ⚠️⚠️ | ⭐⭐⭐ |
BSR | ✅ | ✅ | ✅ | ⭐⭐⭐⭐ | ⚠️⚠️⚠️ | ⚠️⚠️ |
SSG | ✅ | ✅ | ⚠️ | ⭐⭐⭐ | ⭐⭐⭐ | ⚠️⚠️ |
ISR | ✅ | ✅ | ⚠️ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⚠️⚠️ |
SPA | ❌ | ✅ | ✅ | ⭐⭐⭐ | ❌ | ⭐⭐⭐ |
转载请注明来源:LeeDaisen : 《网页渲染方式分析》