Web应用“卡”在何处?

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

本文讲的是Web应用“卡”在何处?,【IT168 资讯】Firefox 3.5已于不久前正式对外发布。Mozilla基金组织宣传说,Firefox 3.5的最大优势是其速度,因为这个最新版的开源浏览器采用了名为TraceMonkey的JavaScript引擎,能把JavaScript的性能提升到一个数量级甚至更多。
  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应用才会得以普及,最终把互联网变成一个可靠的、一流的应用开发平台。

原文发布时间为:2009-07-23
本文作者:IT168.com
本文来自云栖社区合作伙伴IT168,了解相关信息可以关注IT168。
原文标题:Web应用“卡”在何处?

目录
相关文章
|
17天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
1月前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
407 3
|
1月前
|
前端开发 数据库 UED
构建高性能Web应用的关键技术
本文将介绍构建高性能Web应用的关键技术,包括前端优化、后端优化、数据库优化等方面。通过深入讨论各项技术的原理和实践方法,帮助开发者们提升Web应用的响应速度和用户体验。
|
9天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
15 1
|
9天前
|
缓存 监控 数据库
Flask性能优化:打造高性能Web应用
【4月更文挑战第16天】本文介绍了提升Flask应用性能的七大策略:优化代码逻辑,减少数据库查询,使用WSGI服务器(如Gunicorn、uWSGI),启用缓存(如Flask-Caching),优化数据库操作,采用异步处理与并发(如Celery、Sanic),以及持续监控与调优。通过这些手段,开发者能有效优化Flask应用,适应大型或高并发场景,打造高性能的Web服务。
|
11天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
14天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
22天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
1月前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
76 0
|
1月前
|
缓存 监控 应用服务中间件
如何使用负载均衡器提升Python Web应用的性能?
【2月更文挑战第27天】【2月更文挑战第94篇】如何使用负载均衡器提升Python Web应用的性能?