内容整理自多个论坛博客。
主要参考:https://www.jianshu.com/p/b8cfa496b7ec
https://www.jianshu.com/p/10b6074d772c
https://www.douban.com/note/722996691/
客户端渲染(CSR)VS服务端渲染(SSR)
1.客户端渲染和服务端渲染
1.1 概念
客户端渲染:后端不提供完整的html页面,而是提供一些api使得前端可以获取json数据,然后前端拿到json数据之后再在前端进行html页面拼接,然后展示在浏览器上。这种是客户端渲染。这样前端就可以专注UI的开发,后端专注逻辑开发。
服务端渲染:在互联网早期,前端页面都是一些简单的页面,那么前端页面都是后端将html拼接好,然后将它返回给前端完整的html文件。浏览器拿到这个html文件之后就可以直接显示了,这就是我们所谓的服务器端渲染。
1.2 两者本质区别
客户端渲染和服务器端渲染的最重要的区别就是究竟是谁来完成html文件的完整拼接,如果是在服务器端完成的,然后返回给客户端,就是服务器端渲染,而如果是前端做了更多的工作完成了html的拼接,则就是客户端渲染。
1.3 优缺点分析
客户端渲染的优点:网络传输数据量小、减少了服务器压力、前后端分离、局部刷新,无需每次请求完整页面、交互好可实现各种效果。
客户端渲染的缺点:不利于SEO、爬虫看不到完整的程序源码、首屏渲染慢(渲染前需要下载一堆js和css等)。
服务端渲染的优点:首屏渲染快、利于SEO、可以生成缓存片段,生成静态化文件、节能(对比客户端渲染的耗电)。
服务端渲染的缺点:用户体验较差、不容易维护,通常前端改了部分html或者css,后端也需要修改。
1.4 什么情况下使用服务端渲染
我们知道,服务端渲染其实就是由浏览器做的一些事情,我们放到了服务端去做
,那么对于掘金、简书、CSDN、知乎等网站的搭建,这种在网上一搜搜出一堆东西的网站,SEO做的很好,应该多少都用到服务端渲染了吧?当然,做服务端渲染成本是高昂的。vue全家桶或者react全家桶,都是推荐通过服务端渲染来实现路由的。服务端渲染并非完全之策(服务器稀少而宝贵),关于首屏渲染体验以及SEO的优化方案很多,在不使用服务端渲染这个操作下,我们最好的处理方式就是找寻替代优化方案。
扩展:事实上,很多网站是出于效益考虑才启用服务端渲染,性能在其次。