Web性能之战打响 开发者面临复杂度挑战

原创
开发 前端 新闻
尽管浏览器的速度得到了大幅度改进,但网络的瓶颈和脚本问题依然困扰着基于云计算的网络应用。

【51CTO.com快译自7月7日外电头条】Firefox 3.5已经到来,51CTO.com之前曾报道FireFox 3.5将比3.0版快两倍,据Mozilla基金会说,它的主要优点是速度飞快。新版本的Firefox开源浏览器第一次全面使用了TraceMonkey引擎为JavaScript加速,而这以前仅在3.1的测试版中出现过。

这一行动是Mozilla在近来的浏览器大战中使出的最新杀手锏,这同时也表明了浏览器厂商们已经开始转而注重Web应用的性能改善。51CTO.com之前曾报道过Google专家的观点,JavaScript是网站性能的致命克星;根据Google研究小组的报告,互联网上,速度最重要!Google已经在去年给Chrome安装了高性能的JavaScript引擎,而随后Opera和苹果也相继宣布为各自的浏览器推出新的JavaScript引擎,微软也在费力的对IE8进行着优化。

但浏览器的单方面表现并不能代表一切。上周流行天王迈克尔杰克逊的突然死讯让几乎所有的主要新闻网站的访客们感受到了延迟,但问题既不是出在浏览器,也不是出在超负荷的服务器身上。根据网络监控机构Keynote Systems的分析,在许多情况下,网站速度减慢的主要原因是广告网络和第三方内容提供商的问题,他们自身的网络无法处理突然增加的流量。

这一事件正巧显示了Web开发者们越来越关注的一个问题。如今的Web应用通常会整合来自多个来源的内容、数据存储和服务,而且对云计算越来越大的兴趣只会加速这种趋势。考虑到这些交错在一起的因素,Web开发者可以真的保证快速敏感的用户体验吗?或者说随着Web应用的元素越来越错综复杂,我们会不会逐渐对应用的性能变得不在意,把问题扔给互联网来解决?

Web开发者受到的云困扰

制作网页很容易,但建立高效的Web应用却难得多。对开发者来说,开发桌面端软件是更好掌控的工作。你可以通过消灭内存泄漏和提高磁盘访问效率来优化它的性能。但这一切都不适用于Web应用,这时开发者必须依靠浏览器来处理本地资源的效率。

在Web应用中,开发者面临着变幻莫测的网络情况。如果用户访问的网页需要从第三方供应商那里读取图像,那么总体的用户体验就要取决于用户的浏览器、用户的数据连接方式、Web服务器的输出管道、Web应用软件、网络服务器和图片提供商之间的管道,还有图像提供商的服务器软件等等。一位Web应用开发者通常只负责优化这其中的一个方面。

这是因为在这样的基于云计算的分布式模式中,他们认为理所当然会有别的开发者去考虑该他负责的问题。但是你怎么能肯定第三方图像供应商对安全性足够认真?怎么能确保他们的系统设置了足够的冗余,有没有定期备份,这样才不会在出现意外时无计可施?

更为迫切的问题是外部服务是以什么方式与网页进行整合。它们大多依赖于外部JavaScript或iframe,或两者兼有。这两种技术都会拥堵网页的onLoad事件,这是造成用户浏览体验缓慢的一个主要因素。因为这个瓶颈是在JavaScript代码执行前发生的,所以浏览器JavaScript引擎速度的快慢解决不了太大问题。如果网络本身的负担就已经过重,那么就不仅是第三方内容的问题了,你的整个应用都会受到影响。

更多关于云开发的报道请参考51CTO.com的策划专题《SaaS时代的软件开发》和之前的报道《云服务颠覆开发传统观念》。

复杂性的提高导致Web应用风险增加

Web社区正在努力寻找减轻这些问题的方法。例如,新一代的浏览器会在等待JavaScript执行的同时装载其他内容的元素,开发者们找出各种聪明的技巧来消除脚本瓶颈问题。但是,这些单方面的优化无法从根本上解决问题。

“考虑一下这个问题,”Google传播者Steve Souter说,他也是“高性能网站”和“更快的网站”两本书的作者,“我们有时会把一大块的HTML,可能还包括CSS、JavaScript和Flash,一起塞到另一个网页里……因此这造成网页性能大幅度降低也并不奇怪,在某些情况下甚至还会导致整个网站瘫痪。”

部分原因在于这样的整合内容往往缺乏协调的管理和监督。“将第三方内容整合到网页中本该是一个复杂的项目,在同一家公司里需要两个团队协作完成,”Souter说。“比如广告,两个团队需要负责两个不同的公司。而事实上,设计广告的开发者可能永远不会与主网站的建设团队进行沟通。”
但是这并不是说每个人都要去分担网站变慢的责任。请放心,在网站变慢时,所有的访问者都会责怪网站自身,而没有人会去找外部内容提供商的麻烦。

网络一步步走向成熟的应用平台

就目前而言,Web应用的开发者和架构师们应该多去了解一下那些潜在的瓶颈问题,还有那些分布式以及类似云计算的Web应用的自身缺陷。多关注一些相关的书籍和消息,比如51CTO.com上月曾报道的Google面向Web开发者推出了一个网站,专门研究如何提升Web性能,怎样提升JavaScript的性能;并向Web开发者发布了网页加速工具Page Speed

然而从长远来看,Web服务提供者和消费者们需要共同努力,为今后基于云的互联网应用制定出标准的做法。互动广告局(The Interactive Advertising Bureau)为了缩短载入时间已经成立了一个工作组,为广告提供商们提供最佳实践。这是一个好的开始,但显然还有很多工作要做。
Web社区的工作也至关重要,需要提高不仅仅是浏览器性能,还有Web开发团队跨机构合作的能力。随着网站和服务变得更加互联,我们必须拿出新的办法来交流与合作,使分布式的跨网站开发工作可以进行的更加流畅。只有这样,基于云的新一代网络才会蓬勃发展,成长为可靠的、一流的应用开发平台。

【推荐阅读】

  1. Google专家:JavaScript是网站性能的致命克星
  2. Google面向开发者推出网页加速工具Page Speed
  3. 缓存设计详解:低成本的高性能Web应用解决方案
  4. 高性能Web应用的六个好习惯
  5. 视频专题:大型网站架构技术专家谈

【51CTO.com译稿,非经授权请勿转载。合作站点转载请注明原文译者和出处为51CTO.com,且不得修改原文内容。】

原文:For Web apps, performance remains an uphill battle       作者:Neil McAllister

责任编辑:佚名 来源: 51CTO.com
相关推荐

2015-03-30 11:06:12

AppleWatch开发Swift

2011-01-25 08:53:52

webOS

2023-10-30 01:08:35

微信红包高性能架构

2009-06-24 14:01:34

Web开发者社区Google

2021-01-05 10:41:42

算法时间空间

2009-07-09 10:45:16

C#基本概念复杂度递归与接口

2011-05-10 08:26:26

百度Web App应用

2015-09-23 10:27:25

2011-05-12 10:05:28

百度Web APP应用

2020-02-06 13:59:48

javascript算法复杂度

2015-10-13 09:43:43

复杂度核心

2018-12-18 10:11:37

软件复杂度软件系统软件开发

2020-12-30 09:20:27

代码

2019-12-24 09:46:00

Linux设置密码

2022-08-16 09:04:23

代码圈圈复杂度节点

2012-03-23 08:34:44

百度开发者大会

2016-01-08 10:28:44

技术栈SaaSIT管理

2012-07-27 10:00:47

开发者APP推广移动联盟

2011-05-13 13:34:08

百度Web APP应用

2012-03-26 16:00:17

FLASH开发
点赞
收藏

51CTO技术栈公众号