一、数据传输技术
1、xhrHttpRequest(XHR)
优点:操作灵活,可控性强,可以操作http的header和body。
缺点:跨域请求存在问题,低版本浏览器不支持数据的“流”传输。
注意点:get请求可以被缓存。对于少量数据请求而言,get请求发送数据会更快,post适合发送大量数据(当url的参数大于2048个字符时)。
关于Ajax的跨域请求问题:跨域资源共享CORS,CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求(options),但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
2、动态脚本注入
优点:可以跨域。执行速度快,因为数据内容直接作为脚本执行,不是通过解析字符串(Ajax请求需要对数据进行字符串的解析)
缺点:对请求的控制有限,必须将数据封装在函数内,引入外部来源的数据时会有隐患。
3、multiple XHR
优点:一个http请求可以获取大量资源。可以通过数据“流”来分别处理各种资源(监听readystate为3时的数据流)
缺点:需要和服务端配合定义数据的传输规则。请求的数据不能够进行缓存。
二、数据格式
1、XML
优点:通用。
缺点:数据结构笨重。解析速度慢。
2、JSON
优点:通用。和javascript语法紧密结合。结构更清晰简单。
3、JSONP
优点:当数据量大的时候,可以使用JSONP形式的数据,通过动态注入脚本的技术,来加快执行速度,因为JSONP数据不需要被解析,可直接被执行。并且能够突破跨域的限制。
4、自定义数据格式
通过和服务端定义更加简便的纯文本数据格式(使用简单的分隔符)来传输数据,也可以大大减少数据被解析的时间。
现今最主流的数据请求技术依旧是Ajax,配合服务端的http缓存的设置,可以更好的提升性能。当面临大量数据的请求和处理的情况,可以考虑自定义的数据格式或者使用JSONP。