如何提高网络应用程序的性能

来源:互联网 发布:扫描ip地址软件 编辑:程序博客网 时间:2024/05/17 21:39

web开发人员可以再也不用去担心应用程序的性能和网络延迟之间相互排斥的困惑了。幸运的是,可以有好几种方式用以“隐藏“数据交互和计算,同时保证用户体验还不受影响。

传统的web开发人员一直都在纠结于程序的性能和网络延迟这两个独立的现象。然而,现代web的开发要求两者需要兼顾,同时需要进行更为复杂的应用程序和基础网络的架构创建。

”网络延迟是最大的问题,尤其是在web页面对网络进行加载的时候产生了巨大的限制“ Akamai的首席产品架构师盖伊说道。这是一个十分明显的现象,尤其是在用户进行使用测试,特别是在上传和下载时候的速度变化。除非你一开始的网速就很慢,就算是双倍的网速也看不出来有什么差别,但是随着延迟的增加,时间上的耗费是呈线性增长。

延迟是指一个动作的开始到响应之间的延迟时间,在互联网上,应用程序和数据包的延迟是会形成累计的,在通信网络中通过连接传递到每一个元素上。异步发展的方法,例如阿ajax的异步javascript的使用,就能够通过分离这些程序的不简单的网络连接来帮助减少响应延迟。

延迟通常情况下可以通过多任务处理来隐藏掉,使用户体验不受影响。一边在让程序继续运行的同时,将数据交互和计算放置在后台运行。这种差异对于延迟敏感的软件而言的效果是十分显著的,Podjarny说到:启动时间的四倍等同于加载时间的两倍,加之较好的恢复能力导致较少的错误性故障。
主要的公司看到了这一个显著用法,并且可以从消减一秒钟不到的延迟获利。例如,微软的bing搜索发现,每2秒的延迟会减缓4.3%的用户体验,Podjarny记载到(他在个人博客中提到了16个以上用以提高web性能的重要性的要点)。
开发者需要考虑到改变可能会带来的意想不到的后果以及满足新的功能可能会导致用户群减少。例如,当google提供用户增加搜索结果,从每页10条记录增长到每页30条记录。但是每页平均加载的时间从400毫秒增加到了900毫秒。结果导致用户发起搜索的数据减少了25%,即使是用户自愿增加搜索结果的数目。
当延迟被视为一个如此重要的问题的时候,软件供应商们在今天相比过去需要花费更多的时间去考虑如何将他们的设计应用于广域网。Damon Ennis( Silver Peak产品生产的负责人)说道:“软件供应商应该考虑的是一个软件最为重要的设计模式是为了最小化每个操作的往返次数,例如文件的打开,关闭,编辑。”他指出,软件供应商们正在努力的减少程序的繁琐性。他说:“拿微软做个比方,通用intenet文件管理系统,在windows7和server2008中相比前作,提高的不止是一个数量级的。”
这些改变为微软的界面和数据交互带来了很多的价值,其中包括了web浏览器和很多的其他的应用程序,Ennis说道。对于局域网而言,效果是一样的,但是对于局域网而言,他的延迟是低的,延迟造成的影响并不是那么的大!
当这些 SMB2改进方案用于减少应用程序的延迟,Ennis认为很多组织也可以从互联网优化技术中获利,因为“一个设计良好的互联网优化方案可以应用于日常也可以利于各种的应用程序。”
前端优化在另一个方面可以着眼于更加广泛的设计应用,使得web页面在高度延迟的环境下能够工作的更快。一种突出的技术而已减少对于页面的申请次数,诸如sprinting和数据URL的技术让开发者们嵌入二进制数据,如图像转换成文本资源,如CSS和HTML页面。
Podjarny也主张将多个javascript文件合并成一个,将多个CSS的script合并到一块。这样为了减少一些单独文件的反复请求。这么做的原因是因为并不是所有的资源在一个页面是平等的,这里就有一个关于浏览器如何和何时进行资源的下载的逻辑关系。在某些情况下,脚本程序会阻止后续对页面上的资源进行下载。在一个高延迟的环境下,需要花费更长的时间去接受后续的资源。
其他的技术则要复杂的多,例如异步javascript,先让浏览器通过1/3到2/3再到100%这样加载script的组件。在此期间,javascript的组件是并行加载的,这也就是意味着在javascript开始工作之前已经将web页面完全加载完。在高延迟的网络环境下,这个改变可以影响到用户在盯着空白页面状态的长短。
这些脚本的潜在危险可能会使问题变得更加的可怕,例如,最近的facebook接口终端导致了很多站点不得不嵌入facebook的组件,这个组件的行为就阻止了后续的资源的加载。
“那些页面加载失败,尽管facebook的接口只是其中很小的一部分,那些被销毁的脚本成为了一个个孤立的失败。由于高延迟和高的包流失率,每隔资源都有可能产生延误或者中断响应。”通过供应商提供工具是使其在移动开发商保持正常运行的最佳方法。例如,AAMA提供了一个工具箱,用以无线操作和各个网络协议,提高连接各种移动网络的性能。这样的技术已经被广泛应用于TCP窗口开发了。这使得更多的信息通过相对独立的渠道进行最佳的传输,从而减少了很多一些需要确认的会话。
绝大多数的web应用程序都是建立在http上的,很多的的开发者也都是通过使用长轮询来完成一个稳定的连接。然而,Kaazing的技术交流的高级主任皮特,他认为很多的网络应用程序都是可以通过最新的web socket协议来建立稳定的连接的。
websocket,包含在html5之中,可以减少预处理的耗费,从而建立一个更加有效果的通信链接。通过皮特的介绍,通过使用html5的网络应用程序可以讲网络延迟从100ms降低到50ms。
据介绍,websocket可以减少数据在发送到多个客户端的消耗,在应用程序商店上,http传输给1000个客户端需要耗费6MBPS,而websocket只需要耗费0.015个mbps。
开发者可以通过高延迟的环境来测试在不同的方式下的应用程序之间的区别,一个例子就是移动测试,akamai最近开放了网络性能管理的源代码。当一个应用程序完成部署之后,开发者需要通过程序代码捕获使用者的意愿。新式的浏览器能够通过计时API和导航模式从而获取最佳的代码数据,而以往的浏览器则是需要通过数次的下载脚本才能够实现这个功能。
在应用程序部署完毕之后测试是十分重要的,他解释道:“在很多良好的情况下,真正的用户数量是设定的情况下的四倍左右,通常设定的情况下是在无故障,高网络速度的一种虚拟设定,而并不是真是的物理世界,这一点尤其在移动应用上。”