Page 239 - Web性能权威指南
P. 239

•   浏览器保障安全、验证和隐私;
               •   浏览器……

               不用关心这些底层细节,那么我们就可以把时间和精力放在应用的业务逻辑上,只
               要发起请求、管理进度,然后处理服务器返回的数据即可。简单的 API 加上所有浏
               览器的支持,使得 XHR 成为了浏览器网络开发中的“瑞士军刀”。

               结果,几乎所有网络应用(脚本下载、上传、流传输,甚至实时通知),都能够或者
               已经都通过 XHR 实现。当然,这并不是说 XHR 在任何场景中都是最有效的传输方
               式(事实上,后面我们会讨论,多数情况下并非如此),但无论如何它都经常被作
               为旧版客户端的后备传输方式,这些旧客户端通常没有实现较新的浏览器网络 API。
               知道了这一点,下面就来了解一下 XHR 最新的功能,它的适用场景,以及我们在
               性能优化方面能做什么和不能做什么。


                          详尽讨论 XHR API 超出了我们的范畴,我们只讨论性能相关的话题!请
                          参 考 W3C 官 方 对 XMLHttpRequest  API 的 描 述:http://www.w3.org/TR/
                          XMLHttpRequest/。



               15.1 XHR简史

               尽管名字里有 XML 的 X,XHR 也不是专门针对 XML 开发的。这只是因为 Internet
               Explorer 5 当初发布它的时候,把它放到 MSXML 库里,这才“继承”了这个 X:

                   那是值得纪念的日子,就在发版前几天,又增加了一些关键的功能……我知
                   道 MSXML 库要随 IE 一起发布,我跟 XML 团队关系还不错,觉得他们或
                   许能帮个忙。我找到当时的团队领导 Jean Paoli,很快就说服他同意把它作
                   为 MSXML 库的一部分发布。它其实主要跟 HTTP 相关,跟 XML 基本上没
                   什么关系。仅仅是为了让它能早点发布,我才硬给它起了一个带XML的名字。
                                                                     ——Alex Hopmann
                                                                  The story of XMLHTTP
               Mozilla 按照微软的实现也实现了自己的 XHR,并将其命名为 XMLHttpRequest。
               Safari、Opera 和其他浏览器也紧随其后,于是 XHR 成为了所有主流浏览器中的事
               实标准。W3C 针对 XHR 的官方工作草案发布于 2006 年,而这已经是 XHR 得到广
               泛应用以后的事了!

               虽然它在 AJAX 革命中扮演了至关重要的角色,但 XHR 的早期版本确实能力有限:
               只能传输文本,处理上传的能力不足,而且不能处理跨域请求。为解决这些问题,
               W3C 于 2008 年发布了“XMLHttpRequest Level 2”草案,新增了如下一些新功能:


               226   |   第 15 章
   234   235   236   237   238   239   240   241   242   243   244