« 上一篇下一篇 »

创建快速响应的Web应用

随着Ajax的兴起,网站性能不再局限于只是让网站快速呈现。越来越多的网站在加载完成后,借助JavaScript实现页面内容动态更新。这类网站的程序原理和传统的桌面客户端程序类似,同时对这些程序进行性能优化需要一套有别于传统网站的技术。

      从更高的层面上来说,基于用户界面内容的需求,Web应用和传统桌面应用有一个共同的目标:尽可能快地响应用户的输入。当浏览器响应用户发起的加载网站的请求时,它需要处理大量与响应相关的工作:与用户请求的站点建立网络连接,解析HTML,请求相关资源等。详细地分析这个过程,我们可以找到方法优化页面,最大程度地提高渲染速度,但浏览器最终掌控着页面的加载和呈现。

      网站响应用户输入的过程(前提是输入不会导致浏览器加载新页面)是Web开发着可以控制的。我们必须确保响应这些输入的JavaScript能快速地执行。为了更好地理解Web开发者对响应的控制程序,我们将用一点时间来说明浏览器用户界面的工作原理。

      当用户和浏览器交互时,操作系统接收到和计算机连接的各种设备,如键盘或鼠标的输入,在判断哪个应用应该接收这些输入之后,将它们打包为单独事件并放置到该应用的时间队列中。

      像所有GUI应用程序一样,浏览器按对列顺序把它们从队伍中取出,然后决定如何处理这个事件。通常,浏览器将基于这些事件做如下操作:对事件本身进行处理(如:显示器菜单、浏览网页、显示设定画面等)或执行网页自身的JavaScript代码。

      浏览器使用单线程处理队列中的事件和执行用户代码。我们有需要注意的重要概念是,这个处理过程实质上是单线程的。也就是说,浏览器使用单线程从对列中取出事件,然后对实际本身进行处理或执行JavaScript是极其重要的,否则网页和浏览器本身可能变得非常缓慢甚至完全冻结。

« 上一篇下一篇 »