SSR 的全称是Server Side Rendering,对应的中文名称是:服务端渲染,也就是将渲染的工作放在服务端进行。
这种方式很早就存在,早在 Ajax出现之前全部都是这种方式, 由服务端返回给浏览器完整的 html 内容。
浏览器得到完整的结构后就可直接进行 DOM 的解析、构建、加载资源及后续的渲染。
与 SSR 对应的就是 CSR,全称是 Client Side Rendering,也就是客户端渲染。
它是目前 Web 应用中主流的渲染模式,一般由 Server 端返回初始 HTML 内容,然后再由 JS 去异步加载数据,再完成页面的渲染。
客户端渲染模式中最流行的开发模式当属SPA(单页应用),所以后文都会基于SPA进行说明。
这种模式下服务端只会返回一个页面的框架和js 脚本资源,而不会返回具体的数据。 CSR(SPA) 优缺点 页面之间的跳转不会刷新整个页面,而是局部刷新,体验上有了很大的提升。
单页应用中,只有首次进入或者刷新的时候才会请求服务器,只需加载一次js css资源,页面的路由维护在客户端,页面间的跳转就是切换相关的组件所以切换速度很快,另外数据渲染都在客户端完成,服务器只需要提供一个返回数据的接口,大大降低了服务器的压力。
所以后来就有了 web app的叫法,也是为了突出这种体验很像是Native App 。
SPA这种客户端渲染的方式在整体体验上有了很大的提升,但是它仍然有缺陷 - 对 SEO 不友好,页面首次加载可能有较长的白屏时间。 在 SPA 模式下,第一次打开页面我们得到的是一个html 框架,不包含内容。数据的渲染需要等待页面js css资源加载完成,且执行时再发起异步数据请求,然后等数据返回后,再进行渲染,渲染完成后用户才能看到最终的页面。
这样做会直接降低页面的首屏展现时间,也就是“白屏”等待,这个时间的长短和客户端的网络环境也密切相关,可能长也可能短,特别是在移动互联网环境下,对首屏加载性能影响很大。对于用户来说,当然是想更快的看到内容。