Browser:
- 收到服务端响应的字符串了
- 从上到依次次解析,在解析过程中发现了ajax,则再次发起请求,
- 发请求
- 拿到ajax响应结果
- 模板引擎渲染
Note:第一次请求是拿到页面,第二次请求是拿到动态资源数据
缺点: 对SEO相当不友好
优点: 减轻了服务器端的渲染压力;同时,最大的好处就是:能够实现前后端分离开发;
Server:
- 读取index.html
- 模板引擎开始渲染,发送给客户端之前,就已经把index.html渲染处理了
Note:只请求了一次,服务端渲染,相应的结果就是最终的结果,客户端不需要做任何的处理
每当有客户端请求页面了,服务器先在后端调用art-template,把指定的页面预先在后端渲染后,然后通过res.end把这个渲染完毕的完整页面,
返回给客户端直接展示。
优点:对SEO友好,因为我们经过服务器端渲染的页面,在网络中传输的时候,传输的是一个真实的页面。因此,爬虫客户端,当爬到我们的页面后,会分析我们给他提供的这个页面,此时,我们页面中的关键数据就会被爬虫给收录了。
缺点: 服务器端渲染,对服务器压力比较打,可以使用服务器端的页面缓存技术,减轻服务器的渲染压力;不适合前后端分离开发。
- 客户端渲染不利于SEO搜索引擎优化
- 服务端渲染是可以被爬虫抓取的,客户端异步渲染是很难被爬虫抓取的
- 真正的网站既不是存异步,也不是存服务端渲染出来的,而是两者结合的
- 例如京东的商品列表就是服务端渲染,目的是为了SEO搜索引擎优化,而他的商品评论为了用户体验。不需要优化,采用的客户端渲染