目录

传统的服务端渲染SSR

传统服务端渲染,是服务端html模板+数据直接输出html字符串给终端,终端根据html结构加载js、css、图片等资源,渲染页面及部分动态效果。

  • 优点

    • 加载速度快,js计算少
    • 更适合SEO
  • 不足

    • 需要编写模板文件
    • js编码零散,与后端模板强关联,甚至与后端数据强关联
    • 在不使用ajax技术下,对用户不够友好,性能相对差

客户端渲染CSR

为了践行mvc或是术业有专攻或是前后端分离的理念,业界一致地将模板往前端移动,让前端统一负责模板与交互编码,单页应用也开始流行,出现了各种框架,比如react、vue、angular等渐进式框架,目的就为了提高前端自行实现终端模板与交互的开发效率与能力。

这个时候后端顶多就是提供结构化数据,终端根据结构化数据进行渲染页面。

也就是全由javascript来实现页面渲染的模式。

  • 优点

    • 前后端分离,代码不混乱
    • 容易跨pc、h5,甚至app开发
    • 节约后端资源
    • 开发者统一,分工更明确
  • 不足

    • SEO不友好,这是CSR渲染最大的弊端,如果需要SEO的话
    • 出现白屏,跳闪,首屏性能不佳
    • 仅就终端渲染来说,性能更差,毕竟整个页面完全由javascript驱动渲染

现代的服务端渲染SSR

我们即想要前后端分离,又想要SEO友好,渲染效率更好,也就是我们既想要CSR的优点,又想要传统SSR的有点。

有人提出了在服务端在拿到js文件后预先计算与解析出HTML结构,也就是当我们首次访问的时候(首屏,不是首页),服务端预先解析出html,终端直接渲染,可以解决首屏白屏、性能差及SEO不友好问题,在之后的交互,可以采用客户端渲染方式,无需每次都刷新页面,渲染效率提高,且页面友好度高。

  • 优点

    • 前后端编码与文件分离
    • 支持跨多端
    • SEO更友好
    • 界面交互更友好
    • 首屏性能相对更好
  • 不足

    • ssr很优秀,但相对更复杂
    • 需要提供服务端渲染能力
    • 还得考虑部署、负载均衡、高并发等带来的特殊问题

SSR有必要吗

如果讲究让用户的体验更友好,那SSR是很有必要的。

如果很看重SEO,又想跨多端,又想要采用CSR渲染的方式实现,那SSR是有必要的。

一切从自己的实际情况出发,复杂的不一定是最好的,简单的不一定是不好的那个,最适合你的才是最好的。

如果用户是大爷,用户很看重体验,如果项目平台是大爷,用户只关心功能与可用性,选择就不一样。

还得根据团队能力,如果团队的能力认为前后端分离不是件困恼的事,那也可以采用传统的SSR方式实现,只要在请求、数据处理、计算、获取数据、缓存、加载、渲染等环节下下功夫优化,提升性能,提升用户界面交互友好度,也是可以的。