`
再逢山水
  • 浏览: 156317 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

提升Web应用程序性能的最佳实践

 
阅读更多

一、提升Web应用程序性能的6种基本方式

1.减少HTTP请求数

每个HTTP请求都有开销,包括查找DNS、创建连接及等待响应,因此削减不必要的请求数可减少不必要的开销。要减少请求数:

  • 合并文件。将总是同时使用的脚本合并到同一个文件中,不会减小总大小,但将会减少请求数。还可以同样方法合并CSS文件和图片。可以实现文件自动合并:
  • 在构建阶段。用<concat>标记,通过运行Ant合并文件。
  • 在运行时阶段。启用mod_concat模块。如果httpServer是Apache,用pack:Tag作为JSP标签库来合并JavaScript和样式表文件。(pack:Tag是一个JSP-Taglib,可缩减、压缩及合并资源,如JavaScript和CSS,并将它们在内容或普通文件中缓存。)
  • 使用CSS Sprites。将背景图片合并成一个图片,并使用CSS background-image和background-position属性来显示所需图片部分。还可使用内联图片减少请求数。

2.后置加载组件

只呈现需要的组件;其余可等待。最好不要一次呈现太多组件。

某些情况下,可使用后置加载。由于浏览器可视区域外的组件可以后置加载,当这些组建进入可视区域不久后,初始呈现就会失效。

有些JavaScript可以在onload事件后后置加载,如JavaScript中初始呈现后拖动某个元素。

3.前置加载组件

通过前置加载组件,可以利用浏览器的空闲时间请求将来会用到的组件(如图像、样式和脚本)。当用户访问下个页面时,如果大多数组件都已在缓存中加载,那页面加载会快得多。

有两种前置加载:

无条件:一旦触发onload,就取得一些额外组件。

有条件:根据用户的动作,推测用户下一步的方向并进行相应的前置加载。

4.将脚本放在底部

脚本可能会产生问题,因为它们可能会阻碍并行下载。当下载脚本时,浏览器不会再启动其他下载,即使那些位于不同主机。将脚本,如样式表,放在底部,以保证它们在其他下载完成后再下载。

也可以使用延时脚本,这只有Internet Explorer支持。DEFER属性表示脚本不含document.write()。这就告诉浏览器他们可以持续呈现。

5.使用无cookie域组件

当浏览器发出对静态图片的请求,并随之发送cookie时,服务器不会使用那些cookie。由于这些cookie只会造成不必要的网络流量,确保用无请求来请求静态组件。然后使用子域和主机保存这些静态组件。

6.将JavaScript和CSS放在外部

现实世界中使用外部文件通常会使页面运行更快,因为JavaScript和CSS文件被浏览器缓存。HTML文档内的JavaScript和CSS会在每次请求HTML文档时被下载。这减少了需要请求的HTTP的数量,但增加了HTML文档的大小。另一方面,如果JavaScript和CSS在被浏览器缓存的外部文件中,就会减小HTML文档大小,而不会增加请求数。

二、改进RIA小部件性能方法

主流RIA Ajax框架,如ExtJS、YUI、Dojo及其他,都提供一些精巧的小部件库,以增强用户体验。与其他框架相比,Dojo在企业开发领域更强大,这是由于:

  • Object-oriented programming(OOP)编码
  • 跨平台
  • 本地数据存储的Dojo离线API支持
  • DataGrid、2D和3D图形(图表组件提供了在浏览器展示报表更简单的方法)

Dojo在很多网站广泛使用。这里将使用Dojo举例,分析RIA小部件的性能。可根据具体情况使用Dojo小部件调整工具,有Page Speed、Rock Star Optimizer及Jiffy。强烈建议使用YSlow和Firebug。

YSlow

YSlow根据一组高性能Web页面准则,通过检查页面上所有组件,包括由JavaScript创建的,来分析Web页面性能。YSlow是一个集成了Firebug Web开发工具的Firefox插件;它可提供提升页面性能的建议、总结组件性能、显示页面统计数据并提供用于性能分析的工具。

图中显示的是YSlow Grade选项卡上的信息。 

YSlow Grade 面板是 Firefox 插件的一部分

YSlow的Web页面建立在22条可测试的规则基础上,这些规则在下方按重要性和效果排列。研究显示,按照以下规则,Web页面响应时间可提升25%到50%:

  • 尽量减少HTTP请求数。
  • 使用内容发布网络(CDN)。
  • 添加Expires或Cache-Control头部。
  • 用Gzip压缩内容。
  • 将样式表放在顶部。
  • 将脚本放在底部。
  • 避免使用CSS表达式。
  • 将JavaScript和CSS放在外部。
  • 减少DNS搜索。
  • 精简JavaScript和CSS。
  • 避免使用重定向。
  • 删除重复的脚本。
  • 配置ETags。
  • 使Ajax可缓存。
  • 使用GET进行Ajax请求。
  • 减少DOM元素数。
  • 消除404错误。
  • 减小cookie大小。
  • 对组件使用无cookie的域。
  • 避免使用过滤器。
  • 不在HTML中测量图片大小。
  • 使favicon.ico尽可能小,可缓存。

如图:图中的YSlow Statistics,对空缓存的访问用户和之前访问过页面的用户的页面大小做了对比。

Components选项卡显示了每个组件及相关的性能信息。例如,如果组件被gzip压缩,或ETag有内容(如果的话),都能看到。组件大小和超期时间也显示在Components选项卡中,如图所示。

Firebug

Firebug与Mozilla Firefox集成,在浏览网站时有大量开发工具随手可用。可以即时编辑、调试、监控Web页面中的CSS、HTML和JavaScript。

可以使用Firebug Net面板,如图所示,监控Web页面产生的HTTP流量。它向用户展示了所有收集到的和计算出的信息。每个条目表示页面的一个请求/响应来回。

Firebug Console面板,如图所示,提供了两种监控代码性能的方法。 

Profile

对于某个特定的函数,使用Profiler。JavaScript Profiler是能用来测量每个JavaScript代码执行时间的Firebug特性。使用JavaScript Profiler来提升代码的性能,或是查看为什么某个函数运行时间过长。它与console.time();类似,但JavaScript Profiler能提供更多代码内部过程细节。

 

console.time()

对于特定代码段,使用console.time()。控制台会显示您输入到命令行的命令的结果。可以使用console.time(timeName)函数测量某个特定代码或函数执行多长时间。该特性对于提升JavaScript代码的性能非常有用,样例显示:

  1. var timeName = 'measuringTime';    
  2. console.time(timeName); //start of the timer     
  3. for(var i=0;i<1000;i++){    
  4. //do something    
  5. console.timeEnd(timeName);  //end of the timer 

measuringTime:xxms将显示在控制台。

结束语

文中,开发者学习了如何识别Web应用程序中的一些问题或瓶颈。开发者们应了解一些工具、窍门和技巧,以用于调整和改善对用户的性能。

分享到:
评论

相关推荐

    MapXtreme 2005 Web 应用程序规划及最佳实践.ppt

    MapXtreme 2005 是一个强大的...总的来说,MapXtreme 2005 Web应用程序的规划与最佳实践涉及到多个层面,包括技术选型、性能优化、服务器配置和用户体验。开发者需要全面考虑这些因素,以构建高效、可扩展的地图应用。

    C#Web应用程序入门经典

    10. **Web性能优化**:讲解如何通过缓存、减少HTTP请求、压缩资源等手段提升Web应用的性能。 11. **部署与发布**:学习如何将开发好的Web应用程序部署到IIS服务器,以及配置和管理Web服务器。 12. **最佳实践与...

    将PowerBuilder应用程序发布为ASP.NET WebForm应用程序的最佳实践

    PowerBuilder作为一种成熟的开发工具,自其11.0版本起,便提供了将现有PowerBuilder应用程序转化为ASP.NET WebForm应用程序的能力,这一特性极大地提升了开发人员的生产力,同时也带来了一系列挑战和最佳实践。...

    Web 应用程序框架组件参考指南

    综上所述,《Web应用程序框架组件参考指南》不仅提供了丰富的组件细节,还强调了在Web应用开发中遵循最佳实践和法律规范的重要性。它不仅是技术文档,更是开发者提升技能、优化应用性能的宝贵资源。通过深入学习这份...

    web 应用程序测试方法和测试技术详解.txt

    ### Web应用程序测试方法与技术详解 #### 一、Web应用程序测试的重要性 随着互联网技术的飞速发展,Web应用已经成为企业信息化的重要组成部分。由于其基于浏览器/服务器(B/S)模式的特点,Web应用在功能实现、...

    面向.NET的Web应用程序设计-微软考证

    综上所述,面向.NET的Web应用程序设计涵盖了广泛的知识点,包括.NET Framework的基础、ASP.NET的开发模型、数据访问、Web服务、安全性以及性能优化。微软考证是对这些技能的权威认可,通过系统学习和实践,开发者...

    使用Django和Python构建现代Web应用程序的5种最佳实践.docx

    利用ORM简化数据库操作,借助DRF构建RESTful API,使用WebSocket技术实现实时交互,以及通过缓存提升性能,这五个最佳实践将帮助开发者构建出高效、健壮且用户体验优秀的现代Web应用程序。遵循这些原则,开发者可以...

    ASP.NET Web应用程序开发新思维(英文版)

    本资源"ASP.NET Web应用程序开发新思维(英文版)"是一本深入探讨ASP.NET技术的专业书籍,旨在帮助开发者掌握Web应用开发的新方法和最佳实践。 在ASP.NET中,开发者可以使用多种编程语言,如C#或VB.NET,通过编写...

    web应用程序开发课程设计实践课程教学大纲(质量标准)共

    6. **安全与性能**:讲解Web应用的安全最佳实践,如防止SQL注入、XSS攻击,以及优化加载速度、资源管理等。 7. **项目管理与版本控制**:引入Git进行版本控制,讲解敏捷开发方法,如Scrum或Kanban,以实现高效协作...

    全面提升Web2.0应用程序的性能3[整理].pdf

    在Web 2.0应用程序中,用户体验至关重要,而页面加载速度是决定用户体验好坏的关键因素之一。本文关注的是页面渲染性能,尤其是JavaScript脚本的执行时间和浏览器引擎的渲染时间。在用户与网页交互时,浏览器响应...

    构建可靠的Web应用程序

    再者,性能优化也是提升Web应用体验的重要手段。这可能包括缓存策略的实施,如使用内存缓存减少数据库查询;图片、CSS和JavaScript的压缩与合并,以减少页面加载时间;以及利用CDN(内容分发网络)来加速全球用户的...

    编写高性能Web应用程序的10个入门技巧.doc

    在构建高性能的Web应用程序时,有几个关键的技巧和策略可以显著提升应用的效率和响应速度。以下是从"编写高性能Web应用程序的10个入门技巧...不断学习和实践,结合具体的性能分析工具,才能使Web应用程序达到最佳状态。

    WebLogicServer性能及调优-调优Web应用程序[参考].pdf

    优化会话管理是提升Web应用程序性能的重要环节。WebLogic Server提供了多种会话持久性机制,包括基于内存、复制、JDBC等。选择哪种机制取决于应用程序的特性,如会话大小、生命周期、可靠性和故障转移需求。内存中...

    编写优秀的高性能WEB应用程序的外文及其翻译

    【描述】:本文主要探讨了编写高性能Web应用程序的技巧,旨在帮助开发者提升Web应用的性能。 【标签】:外文翻译,Web开发,性能优化 【正文】: 在Web开发领域,创建高性能的应用程序至关重要,因为它直接影响...

    ExtJS Web应用程序开发指南(第2版).zip

    ExtJS是一种基于JavaScript的开源富客户端框架,专用于构建交互式和桌面级的Web应用程序。在《ExtJS Web应用程序开发指南(第2版)》中,开发者可以深入了解如何利用这个强大的框架来创建功能丰富的Web应用。这本书...

    VMware5.5性能最佳实践

    VMware vSphere 5.5性能最佳实践文档是一份指导手册,为管理员提供了关于如何优化和提升vSphere 5.5环境性能的详细信息和建议。这份文档包括对硬件配置、ESXi主机的管理、虚拟机的性能调整、存储和网络的配置,以及...

    Smart Client系列课程(6):分布式智能客户端应用程序开发最佳实践(Video)

    Smart Client系列课程的第六部分专注于分布式智能客户端应用程序的开发最佳实践,这意味着课程将涵盖如何设计、实现和优化这种复杂的应用程序,以确保它们能够在各种网络环境中高效、稳定地运行,并提供优秀的用户...

    Web程序设计13 Web程序设计13 Web程序设计13 Web程序设计13

    Web程序设计是构建和维护互联网应用程序的关键领域,它涵盖了多种技术和工具,用于创建交互式的、动态的、用户友好的网站。...通过这个阶段的学习,开发者可以更好地理解和实现复杂Web应用程序的构建。

    react-一个基于17kbPreactRedux的渐进式Web应用程序

    标题 "react-一个基于17kbPreactRedux的渐进式Web应用程序" 暗示了这个项目是关于使用轻量级的Preact库和Redux状态管理器来构建一个渐进式Web应用程序(Progressive Web App,简称PWA)。Preact是一个与React高度...

Global site tag (gtag.js) - Google Analytics