3202年了,为啥SSR并没有预想中的流行?
刘奎,社区昵称 kuitos 。支付宝体验技术部前端工程师,开源微前端方案 qiankun 作者,目前在蚂蚁负责 Web 基建研发相关工作。
刘勇,社区昵称天猪,某大厂 Node.js Infra 负责人,EggJS / CNPM 核心开发者。
SSR,并不是伪需求
电商平台:更快的首屏渲染可以让用户更快的看到商品信息,提升购买转化率
营销活动页:秒开能有效提升营销活动的业务效果
门户网站:内容型站点通常对 SEO 有着比较强的诉求
SSR,想红有点难
技术复杂度:SSR 需要在服务器端进行渲染,并与前端框架进行集成,对开发人员来说需要掌握更多的技术知识。
SSR 带来的额外的开发及维护成本:相对于 CSR,SSR 方案需要前端额外去关注服务端相关的开发及运维,比如如何写出更高性能的服务端渲染逻辑,如何处理潜在的内存泄露、变量污染等隔离问题,如何做 SSR 的容灾(在 SSR 失败时 fallback 到 CSR)等,这些都需要团队有额外的资源及时间投入。
场景匹配度:国内大量的服务是通过小程序、APP 这类载体进行分发的,纯 Web 技术栈的产品相对较少,这点与国外的场景有着非常大的不同。
首屏页面静态资源优化:通过代码切割 & 懒加载等手段,确保首屏需要的 JS/CSS 是最小化的版本,并通过内联等方式直接打到 HTML 中,减少首屏渲染需要的网络请求;
缓存和预加载:利用客户端的缓存及预加载等机制,提升二次访问速度;
使用更轻量的框架:选择更轻量的前端框架,从而减少首屏的 JS 体积,提升加载速度;
优化关键接口响应速度:优化首屏需要的关键内容的接口响应速度,确保前端能更快的呈现页面。
应用改造成本:大部分应用都是无法直接在服务端环境运行的,基本都需要做一定程度的改造,比如消除首屏渲染代码中对 window、location 等浏览器特有 API 的依赖,构建出用于服务端运行的 JS 等。
SSR 函数研发及运维挑战:同时具备丰富的前端及服务端开发经验的团队在大部分公司都是非常少见的,如前面提到的,SSR 带来的额外的服务端的开发及运维挑战,这个也是需要前端团队考虑的。
也许,SSR+CSR 会是未来新方向?
往期推荐
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦