简单介绍两种:
第一种Ajax
Ajax = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),ajax就是基于浏览器提供的XMLHttpRequest对象来实现的
什么叫异步?
异步,不同的意思,这里也就是指不跟浏览器加载执行网页代码的步伐一致,也就是说在一个网页中需要用户操作来触发执行代码,而不是整个网页代码一次性执行完毕。
它最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。并且不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
总的来说,就是:
ajax 是数据请求方式的一种,
- 前端可以发送数据到后端
- 可以接受从后端传过来的数据
- 可以解析从后端传过来的数据
- 可以对页面进行局部刷新操作
async
类型:Boolean
默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。
注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
第二种Websocket
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
- HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你)
Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求。
总体来说:
ajax轮询 ,ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。基于此都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性。
ajax轮询 需要服务器有很快的处理速度和资源。(速度)
HTTP还是一个无状态协议,通俗的说就是,服务器因为每天要接待太多客户了,没有记性,你挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。
当服务器完成协议升级后(HTTP→Websocket),服务端就可以主动推送信息给客户端,主动性。
所以,目前需要大量实时更新的场景,推荐使用Websocket,资源开销小,且具有主动性。