http://www.sina.com.cn   2009年07月22日 11:27   计算机世界

 

  Web应用响应缓慢,其原因并不全都出在网页本身,很多时候广告等第三方内容提供方才是罪魁祸首。

  Web应用“卡”在何处?

  乐天 编译

  Firefox 3.5已于不久前正式对外发布。Mozilla基金组织宣传说,Firefox 3.5的最大优势是其速度,因为这个最新版的开源浏览器采用了名为TraceMonkey的JavaScript引擎,能把JavaScript的性能提 升到一个数量级甚至更多。

 

Web应用“卡”在何处?

  Mozilla将Firefox 3.5的卖点放在JavaScript引擎上并不令人意外,随着浏览器供应商把竞争的焦点转到了改善Web应用的性能上,JavaScript引擎已经成 为突破的重点。自从Google在其去年发布的Chrome中首次采用了高性能的JavaScript引擎以来,到目前为止,Opera和Apple都宣 布在各自的浏览器中引入新的JavaScript引擎,甚至微软也不得不对其IE性能进行优化。

  不过,浏览器并不是Web应用的全部。不久前,在获知迈克尔·杰克逊死讯后,不少想了解该消息的网民就经历过一次网络大堵塞。事后的调查发现, 问题的根源并不是浏览器的性能不高,也不是新闻网站的服务器处理能力不够,而是因为广告网络和第三方的内容供应商自己的网应对不了这么高的并发访问请求。

  这次事件再次提醒我们Web应用的复杂性。现代的网络应用通常有多个内容来源、数据来源,其中的服务也可能来自不同的组织,最终用户体验到的Web应用是多个因素综合后呈现的结果,单靠Web应用的开发者是无法保证提供一个快速响应的Web应用的。

  Web开发者面临的难题

  开发一个网页很容易,但是开发一个好的Web应用绝对不是一个简单的事情。对开发人员来说,开发桌面应用一切都在自己的掌控之中。比如,为了优 化程序的性能,程序员可以减少内存泄漏或者改善程序访问磁盘的效率等。而在开发Web应用时,这些方法都用不上,因为此时是浏览器在管理本地资源的利用。 而且,Web开发人员还必须面对并不一定可靠的网络。这导致Web应用的性能具有非常大的不确定性。

  比如,用户访问的一个网页中有一个图片来自第三方。这时,用户访问网页的最终效果就不仅取决于用户所使用的浏览器,还与用户的网络出口带宽、提 供网页的Web服务器、Web应用程序、Web服务器与提供图片的服务器之间带宽以及提供图片的服务器上的软件等都有关。而Web应用的开发者只能优化他 能做的部分——其中很小的一部分,作为Web应用的开发者根本就不知道第三方的图片提供者是否充分考虑了安全问题,也不知道第三方是否进行了常规的备份, 因此,对整个应用是否能正常运行也没有什么把握。

  一个更直接的问题是究竟采用何种方式将外部的服务到底集成到网页中。目前,大多数服务采用的是JavaScript、iframe或者两者同时 采用,其中的任何一种都可能出现问题,从而影响网页的加载,导致用户请求的网页无法打开或者打开很慢。而且,问题往往出现在JavaScript引擎执行 脚本之前,因此,很多时候浏览器的JavaScript引擎再快也于事无补。如果再加上拥塞的网络,就让原本脆弱的Web应用更不可靠了。

  复杂的网页增大了风险

  业界正在努力解决这个问题。例如,现在的浏览器在等待JavaScript脚本执行的同时可以下载其他网页内容,开发人员也可能想出很多办法来克服脚本方面的问题。不过,归根结底,这些办法的作用是很有限的,不能从根本上解决问题。

  《高性能网站》的作者、Google公司的Web性能专家Steve Souter说:“你设想一下,当我们把一大堆包含CSS、JavaScript、Flash等众多内容的HTML语句构成的网页导入另一个网页时难免会 影响该网页的呈现,因此这个网页的性能如果大幅降低、甚至整个网站完全崩溃,我们都不应该感到奇怪,。”

  导致这个问题出现的部分原因在于这些内容之间整合时缺乏统一的协调或监控。“要把第三方的内容整合到一个网页中是很复杂的工作,即使这两者属于 同一个公司,也并不容易,更何况如果整合的是广告内容,大多数情况下这两方分别属于不同的公司。” Souter说,“实际上,广告内容的提供者很可能从来没有与网站内容的开发团队进行过沟通和联系。”

  而另一方面,这并不是每个人都要为网站响应慢而承担责任。实际情况是,如果网站的网页打不开或者很长时间才能打开,人们通常会责备这个网站的所有者,而几乎很少有人会想到可能原因出在网站之外的内容的提供方,特别是广告的提供方。

  事情向好的方向发展

  如今,Web应用的开发者和架构师所要做的首先是充分了解开发这种分布式、类似云的Web应用时可能存在的性能瓶颈或者其他可能出现的问题。 Souter的《高性能网站》是一个不错的起点,而不久前Google启用了一个新的网站,专门用于指导Web开发人员,网站上介绍了很多改善 JavaScript性能的最佳实践。

  但是,从长远发展而言,Web服务的提供方和消费方需要合作制定出一个基于云的互联网应用开发实践标准。IAB(互联网架构委员会)已经成立了 几个工作组,这些工作组给广告提供方提供了很多可以减少广告装载时间的最佳实践。这是一个非常好的开端,但是,很显然后面还有很多工作要做。

  目前还有一个让事情变得更复杂的问题就是大客户非常强势。比如,沃尔玛或者几个主要的运行项目组织常常会对外部的内容提供商提出很多要求,如全面的服务级别协议以及Web开发者的诸多责任等,而一般的报纸出版商就不可能提出这些要求,更小一些的客户就更不可能提出了。

  这也就是为什么这一点非常关键:即Web应用的开发界应该共同努力,不仅要提高浏览器本身的性能,而且更为重要的是要提高跨组织的Web开发团 队协作能力。随着网站之间和服务之间的联系日益紧密,我们需要新的办法进行沟通、协作和合作,以确保分布式、跨网站的开发工作进行得更为顺利。惟其如此, 基于云的Web应用才会得以普及,最终把互联网变成一个可靠的、一流的应用开发平台。

  ===链接==

  网络广告性能引起关注

  广告引发网页呈现速度的问题已经引起了人们的重视,这也正是IAB(互联网结构委员会)下属的广告装载性能工作组(Ad Load Performance Working Group)和的富媒体和Ajax工作组(Rich Media & Ajax Working Group)主要工作内容。

  去年下半年,前者正式公布它的第一个工作成果网络广告性能最佳实践,该文档为所有网络广告内容的制作方、交付方以及所有相关各方(包括代理、供应商、发布商)提供了一个如何减少网络广告对网页的影响的指南。

  而富媒体和Ajax工作组同一天发布的“在异步广告环境中的富媒体广告最佳实践”则从更具体的角度提供了方法论指导,尽管这个最佳实践面向的富 媒体,而实际上,它对提升网页装载一般广告内容时的性能同样具有指导意义。以此为基础,该工作组未来还会推出测量广告转载性能的方法(或者工具),以此来 改善用户访问互联网的体验。