服务端渲染可以用ajax吗,服务端渲染(SSR)
导读
本文主要是从三个方面学习服务端渲染,内容整理自多个博客。
服务端渲染是什么?什么是服务端渲染?(服务端渲染的运行机制)
为什么使用服务端渲染?服务端渲染解决了什么问题?
什么情况下使用服务端渲染?(服务端渲染的应用实例与使用场景)
一、概念
首先,说到服务端渲染我们要先对渲染这个概念有一个大概的了解
渲染:就是将数据和模版组装成html
客户端渲染(CSR)VS服务端渲染(SSR)
那么,为了更好的理解服务端渲染,我们也很有必要去了解一下客户端渲染。将客户端渲染与服务端渲染同时进行学习理解。
1.客户端渲染
1.1概念
解释一:客户端渲染模式下,服务端把渲染的静态文件给到客户端,客户端拿到服务端发送过来的文件自己跑一遍js,根据JS运行结果,生成相应DOM,然后渲染给用户。
解释二:html 仅仅作为静态文件,客户端在请求时,服务端不做任何处理,直接以原文件的形式返回给客户端客户端,然后根据 html 上的 JavaScript,生成 DOM 插入 html。
延伸:前端渲染的方式起源于JavaScript的兴起,ajax的大热更是让前端渲染更加成熟,前端渲染真正意义上的实现了前后端分离,前端只专注于UI的开发,后端只专注于逻辑的开发,前后端交互只通过约定好的API来交互,后端提供json数据,前端循环json生成DOM插入到页面中去。
1.2.利弊
好处: 网络传输数据量小、减少了服务器压力、前后端分离、局部刷新,无需每次请求完整页面、交互好可实现各种效果
坏处:不利于SEO、爬虫看不到完整的程序源码、首屏渲染慢(渲染前需要下载一堆js和css等)
2.服务端渲染
2.1.概念
解释一:服务端在返回 html 之前,在特定的区域,符号里用数据填充,再给客户端,客户端只负责解析 HTML 。
解释二:服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成 HTML 字符串,然后把它返回给客户端。客户端拿到手的,是可以直接渲染然后呈现给用户的 HTML 内容,不需要为了生成 DOM 内容自己再去跑一遍 JS 代码。使用服务端渲染的网站,可以说是“所见即所得”,页面上呈现的内容,我们在 html 源文件里也能找到。
2.2.利弊
好处:首屏渲染快、利于SEO、可以生成缓存片段,生成静态化文件、节能(对比客户端渲染的耗电)
坏处:用户体验较差、不容易维护,通常前端改了部分html或者css,后端也需要修改。
3.对比
其实前后端的渲染本质是一样的,都是字符串的拼接,将数据渲染进一些固定格式的html代码中形成最终的html展示在用户页面上。 因为字符串的拼接必然会损耗一些性能资源。
如果在服务器端渲染,那么消耗的就是server端的性能。
如果是在客户端渲染,常见的手段,比如是直接生成DOM插入到html 中,或者是使用一些前端的模板引擎等。他们初次渲染的原理大多是将原html中的数据标记(例如{{text}})替换。
二、为什么使用服务端渲染,它解决的是什么问题
简单总结起来就是两点:
首屏加载快
相比于加载单页应用,我只需要加载当前页面的内容,而不需要像 React 或者 Vue 一样加载全部的 js 文件
SEO 优化
对于单页应用,搜索引擎并不能收录到 ajax 爬取数据之后然后再动态 js 渲染出来的页面。
为了更便于理解,下面几段话摘自掘金小册:
事实上,很多网站是出于效益的考虑才启用服务端渲染,性能倒是在其次。
假设 A 网站页面中有一个关键字叫“前端性能优化”,这个关键字是 JS 代码跑过一遍后添加到 HTML 页面中的。那么客户端渲染模式下,我们在搜索引擎搜索这个关键字,是找不到 A 网站的——搜索引擎只会查找现成的内容,不会帮你跑 JS 代码。A 网站的运营方见此情形,感到很头大:搜索引擎搜不出来,用户找不到我们,谁还会用我的网站呢?为了把“现成的内容”拿给搜索引擎看,A 网站不得不启用服务端渲染。
但性能在其次,不代表性能不重要。服务端渲染解决了一个非常关键的性能问题——首屏加载速度过慢。在客户端渲染模式下,我们除了加载 HTML,还要等渲染所需的这部分 JS 加载完,之后还得把这部分 JS 在浏览器上再跑一遍。这一切都是发生在用户点击了我们的链接之后的事情,在这个过程结束之前,用户始终见不到我们网页的庐山真面目,也就是说用户一直在等!相比之下,服务端渲染模式下,服务器给到客户端的已经是一个直接可以拿来呈现给用户的网页,中间环节早在服务端就帮我们做掉了,用户岂不“美滋滋”?
三、 什么情况下使用服务端渲染?
通过服务端渲染的概念以及它的两个特点:首屏加载速度快、SEO优化。
我们知道,服务端渲染其实就是由浏览器做的一些事情,我们放到了服务端去做,那么对于掘金、简书、CSDN、知乎等网站的搭建,这种在网上一搜搜出一堆东西的网站,SEO做的很好,应该多少都用到服务端渲染了吧?当然,做服务端渲染成本是高昂的。
vue全家桶或者react全家桶,都是推荐通过服务端渲染来实现路由的。
服务端渲染并非完全之策(服务器稀少而宝贵),关于首屏渲染体验以及SEO的优化方案很多,在不使用服务端渲染这个操作下,我们最好的处理方式就是找寻替代优化方案。
关于在server端还是在browser端渲染的选择,更多的是要看业务场景。
相关文章延伸阅读
服务端渲染可以用ajax吗,服务端渲染(SSR)相关推荐
- 【SSR和CSR】服务端渲染和客户端渲染区别?如何快速分辨页面是SSR还是CSR?
首先,介绍一下 SPA.SEO.SSR 三者的区别 SPA(single page application)单页面应用,是前后端分离时提出的一种解决方案. 优点:页面之间切换快:减少了服务器压力: 缺 ...
- 浅析客户端渲染(CSR)与服务端渲染(SSR)
最近刚好公司有项目需要用到服务端渲染,于是花了些时间了整理了关于服务端渲染与客户端渲染的知识,现在记录下来,希望能帮助大家提升对浏览器渲染,服务端渲染的理解,在项目选型上做出正确的决策. 本文会涉及这 ...
- ajax 获取java数据_如何使用Ajax从服务端获取数据
在本文中将给出一个例子来介绍使用 Ajax 技术从服务端获得数据的三种方法.这个例子很简单,就是两个选择框(html中的标签),通过选中第一个select的某一项后,会从服务端得到一些数据,并加载到第 ...
- ajax 服务端 除了echo,Ajax轮询——定时的通过Ajax查询服务端
概念:轮询(polling):客户端按规定时间定时向服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. test.html //前端代码 var getting = { ur ...
- 前端3DOM编程3——Ajax和服务端通信
1.通信基础 2.HTTP协议 3.Ajax 4.cookie 六.Ajax和服务端通信 1.通信基础 (1)Web服务器搭建 服务器是一台24h不断电.不关机,提供某种服务(文件. ...
- ajax 短轮询_Ajax轮询——“定时的通过Ajax查询服务端”
Ajax轮询--"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...
- ajax从服务端获取数据(服务端返回html、xml)
ajax的本质就是,发送http请求的工作交给js中的XMLHttpRequest对象去做! <!DOCTYPE html> <html> <head> <m ...
- Shell in AIX Web端 自动远程执行重启tomcat服务命令
2019独角兽企业重金招聘Python工程师标准>>> Web端 自动远程执行重启tomcat服务命令 vi restart.sh #!/bin/sh JAVA_HOME=/us ...
- 阿里8亿加持B端智能化后,本地生活服务更好做了吗?
图文来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 若说"让天下没有难做的生意"是阿里的愿景,那"让本地没有难做的生意",就是阿里本 ...
最新文章
- 2017年7个主要的金融行业数据趋势
- 网络负载均衡相关技术-第四层交换功能
- Cell子刊:MRI有助于揭示睡眠之谜
- Intel汇编语言程序设计学习-第六章 条件处理-上
- android版记账本
- boost::mp11::mp_replace_at_c相关用法的测试程序
- iOS开发--线程通信
- /etc/services
- php动态柱形图,php生成柱状图(统计图)程序
- Java中的for循环和JavaScript中的for循环差别初探(01)
- 【BZOJ 1036】树的统计【树链剖分模板】
- 详细的Faster R-CNN源码解析之proposal_layer和proposal_target_layer源码解析
- java去处科学技术法,java撤销科学计数法
- Javascript实现全屏阅读和复制功能
- 聊一聊最近比较火的多云管理平台
- Bug:正试图在 OS 加载程序锁内执行托管代码
- 计算机卡登录界面,win10电脑卡在登录界面怎么办
- 人类投资者VS人工智能,究竟谁会胜出?
- Android折腾记——Linux on Android在Android手机上跑Linux教程
- int / long / long int / long long / long long int
热门文章
- CF1514C---数论
- 有人串口转wifi模块 httpd client通信示例-用户使用网页通过服务器收发串口数据源码 小黄人软件
- 如何更改您的Apple Watch表带(不花一吨)
- 使用光泵磁力仪(OPMs)非接触测量视网膜活动
- 短信发送验证码实现验证
- GNN模型系列(一)——Vanilla GNNs
- Google 出了款小程序:原来你们都是神笔马良!
- Nginx学习部署环境(一)
- 挖掘应用型创新人才 第六届大学生RDMA编程挑战赛正式启幕
- Error in v-on handler: “TypeError: Cannot read property ‘validate‘ of undefined“