什么是服务端渲染?
目前大部分的页面都是客户端渲染,即客户端请求到 html 和 JavaScript 文件,等待 JavaScript 文件执行后(插入 DOM 节点、请求数据),得到真正最后的页面。
而 SSR 则是将这个过程放到了服务器端,页面会在服务器计算,将最后包含数据的 html 代码返回。
SSR 的渲染过程如下图:
下面说说使用 SSR 的利弊:
✅ SSR
1、利于 SEO
目前很多网站都采用了 SPA 的形式,页面中的大多数 DOM 节点都是通过客户端运行 JavaScript 动态生成的。因此,网络爬虫能够直接爬取到的信息比较少, SPA 不利于 SEO 的。
而使用服务端可以很好地解决这个问题,SSR 返回给客户端的是已经包含了数据并执行了 JavaScript 的 HTML 代码,这有利于爬虫的对页面信息进行提取。
2、利于首屏渲染
白屏产生的很大一部分原因一般有这几个:
- 网络慢
- 所需要加载的包很大
- JavaScript 运行时间长
使用 SSR,客户端就并不需要依赖 JavaScript ,用户可以更快的看到内容。
❎ SSR
1、服务器压力大
SSR 占用的是服务器资源,如果访问量增加,服务器的压力也会变大
2、开发受限
Server 端的渲染过程是一个同步的操作,其本质是将 JSX 组件渲染为 HTML 字符串。
setState
、 hooks
这类对组件异步更新状态的方法,以及组件的 生命周期
方法,在 Server 端不会被执行。开发过程中,应尽量避免将用于渲染初始页面的状态,通过异步的方式来更新。
3、部署也会更加的复杂