- 浏览: 2870276 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
Web 2.0 应用的推广为用户带来了全新的体验,同时也让开发人员更加关注客户端性能问题。
最近,资深Web 性能诊断专家、知名工具dynatrace 的创始人之一Andreas Grabner 根据自
己的工作经验,总结了Web 2.0 应用客户端性能问题十大根源,InfoQ 中文站将这十个问题
做了概括整理,供Web 开发人员借鉴和思考。
1. IE 中的CSS 选择器(selector)运行缓慢
Web 开发人员通常使用JavaScript 框架(如jQuery)提供的CSS 选择器来实现查找功能,如
var element = $(“.shoppingcart”),但是IE 6 和7 没有提供这种查找方法的原生实现。所以,
JavaScript 框架不得不通过遍历整个DOM 树来达到目的。这种方式花费的时间比在其他浏览
器中的消耗要多得多,而且严重依赖于DOM 树的规模。IE 8 对CSS 查找提供了较好的支持,
所以Web 人员最好升级相应的JavaScript 框架版本以利用这些新特性。
2. 针对相同对象重复进行 CSS 查找
正如第一点所说,单个CSS 查找代价高昂,在这种情况下,如果还要对相同的对象进行多次
重复查找,那性能问题就可想而知了。下图是一个典型的Web 页面中CSS 查找功能调用统
计结果:
(引自dynatrace 博客,中间一列为查找函数总执行时间,单位毫秒,最后一列为函数调用
次数)
对于这种问题,Andreas Grabner 建议将第一次查找的结果保存到变量中,在以后需要的时
候重用即可,不必再重复进行查找。
3. XHR 调用太多
JavaScript 和XmlHttpRequest 是AJAX 技术的基础,很多JavaScript 框架都提供了非常方便的
使用方法,Web 开发人员会充分利用其异步通信优势来实现诸如分页加载等效果,避免对
整个页面的操作。
Andreas Grabner 根据自己的经验指出,他发现这种方式被滥用了——过多的信息通过过多的
调用来动态访问。例如,在一个显示10 种商品的页面中,开发人员可能想分别加载每种商
品的详细信息。这意味着,你需要和服务器端进行10 次交流才能得到全部信息,也会对后
台系统产生压力。他建议,在这种情况下,把10 次调用合并成1 次来减少通信压力。
4. 代价高昂的 DOM 操作
操作DOM 是网页交互性的必要技术。拿添加DOM 元素来说,存在多种实现方式,每种方
式因为不同的浏览器类型和元素数量大小带来的性能影响也各不相同。建议大家仔细分析比
较不同的方法,采用适合自身情况的技术。
5. JavaScript 文件过多
Andreas Grabner 说,对于一个典型的网站来说,存在超过40 个单独的JavaScript 文件并不
少见。他指出,JavaScript 文件过多带来两个问题:一是浏览器在加载这些文件时需要通过
JavaScript 引擎切换上下文运行环境,二是因为下载文件而带来额外的网络通信。解决方法
是:减少 JavaScript 文件数量!
6. DOM 规模庞大
DOM 规模对页面性能影响很大,具体表现在:
占用的内存
从根节点到子节点的style 变化所花费的开销
IE 中CSS 查找的性能问题
DOM 遍历操作的性能问题
所以,警惕你的DOM 树!
7. 事件处理函数绑定过多
对于Web 开发人员来说,绑定事件处理函数是日常工作之一。Andreas Grabner 提醒大家关
注其对性能的影响:
绑定操作本身消耗时间(如查找对象、注册事件管理器等)。
当事件被触发时,事件管理器需要查找注册该事件的元素,并调用正确的事件处理函数。
在切换页面时,要记住对事件解绑,避免 DOM 相关的内存泄露问题。在生产集群上频
繁根据垃圾邮件模式为邮件计分
8. 外部服务执行缓慢
很多网页都嵌入了外部内容(如广告栏等)或者调用外部服务,Web 开发人员通常需要在
页面中包含由第三方提供商发布的JavaScript 文件,而通常这些文件中就存在前面所提到的
性能问题,我们需要擦亮眼睛,如果有问题要反馈给第三方供应商让其修改优化。
9. 滥用视觉效果
很多JavaScript 框架都提供了绚丽的视觉特效,如动态弹出表单等,一些方法在示例代码中
运行良好,但是在实际的页面中特别是DOM 规模较大时表现不尽人意。Andreas Grabner 建
议Web 开发人员在引入视觉效果时关注其对浏览器CPU、渲染引擎和整个网站性能的负面
影响。
10. 日志和监控粒度过细
现在存在很多优秀的日志和监控工具,但是如果把粒度设得太细(如记录每次鼠标移动的详
情),信息的收集过程会对JavaScript 引擎和网络产生额外的负担。
Web 2.0 应用客户端性能问题十大根源向大家介绍完了,原文作者Andreas Grabner 不仅是
Web 性能诊断工具dynatrace 的创始人之一,而且参与了许多企业级Web 应用的性能优化项
目,他总结的这些问题相信会对国内Web 开发人员带来一定的启示。
发表评论
-
30个你必须熟记的CSS选择器
2015-06-27 08:44 1770你学会了基本的id,class类选择器和descendant ... -
40 个超棒的免费 Bootstrap HTML5 网站模板
2015-04-11 16:12 2828Bootstrap 是快速开发Web应用程序的前端工具包。它 ... -
必须记住的 30 类 CSS 选择器
2014-12-30 08:56 1002大概大家读知道`id`,`class`以及`descenda ... -
如何防止google map 加载Roboto字体
2014-12-26 13:16 867思路是在window.onload中当检测到加载Roboto ... -
JavaScript Equality Table
2014-12-09 16:17 1862Tables displaying the issue: ... -
WebStorm快捷键收集
2014-11-25 10:40 30061、webstorm快捷键: IntelliJ-Idea ... -
webstorm 常用快捷键
2014-08-25 15:58 944常用快捷键 Ctrl+/ 或 Ctrl+Shift+/ ... -
how to change bower components folder
2014-08-25 09:26 7731. create the file bower.json ... -
程序员应该知道的 13 个设计技巧
2014-07-14 09:34 739开发你的美感 … 我最喜欢的站点是: a ... -
tomcat7中tomcat-users.xml配置
2014-04-26 15:48 711将以下代码加入tomcat-users.xml中,即可登录t ... -
tomcat-maven-plugin的使用
2014-03-04 10:52 881环境: Ubuntu 8.10, tomcat6, ma ... -
Jsp动态显示服务器时间
2013-12-31 13:16 1084<script language=" ... -
前端工程与性能优化(下):静态资源管理与模板框架
2013-09-25 08:57 984本系列文章从一个全新的视角来思考web性能优化与前端工程之间 ... -
前端工程与性能优化(上):静态资源版本更新与缓存
2013-09-20 09:35 973每个参与过开发企业级 ... -
Handy and Useful jQuery Snippets for Developers
2013-09-18 15:43 805jQuery is a cross browser Java ... -
11 个用来创建图形和图表的 JavaScript 工具包
2013-08-13 07:00 1338Aristochart DEMO || Download ... -
Jive 论坛 license破解
2013-08-03 13:27 13271. 找到文件 \admin\global.jspf 注释 ... -
2012年度最佳Web前端开发工具和框架
2013-01-10 10:52 17322012年,Web 开发领域继续在快速的发展,HTML5 ... -
为网页设计师准备的 10 个色彩方案生成器
2012-02-22 23:01 1179Pictaculous ColorExplo ... -
13个最常用的CSS和HTML快速开发工具
2012-02-21 08:18 12351)CleverCSS CleverCSS ...
相关推荐
作为一款基于Web的应用,Bugfree能够支持跨平台的使用,无论你是在Windows、Linux还是Mac OS环境下,只要有Web浏览器,就可以方便地进行Bug跟踪与修复工作。 ### 核心特性 1. **易用性**:Bugfree 2.0 设计简洁,...
它提供了一种高效且方便的方式来捕获、记录以及解析应用程序在运行时可能出现的异常情况,从而帮助开发者更有效地诊断和修复问题。此组件基于官方客户端进行改造,以适应.NET Framework 2.0的兼容性需求,使得老版本...
2. 访问权限:尽管原始程序可以正常运行,但通过IE浏览器访问Web服务仍然可行,这暗示问题可能在于应用程序的配置或认证机制。 3. IIS设置:IIS(Internet Information Services)服务器的配置没有异常,直接通过IIS...
XPages作为IBM Lotus Notes/Domino 8.5推出的用于构建Web 2.0应用程序的新技术,为开发者提供了前所未有的灵活性和对Web内容的精细控制。本文旨在深入探讨XPages的服务器端JavaScript/Java调试技巧,帮助初级开发者...
ASP.NET是一种广泛使用的Web应用程序开发框架,由微软公司推出,它极大地简化了.NET开发者构建动态、数据驱动的网站和Web应用程序的过程。在ASP.NET中,ViewState是一个关键的概念,用于在页面回发期间保持控件的...
在VS2005中,开发者可以利用.NET Framework 2.0的强大功能来构建Web应用。这个IDE提供了丰富的工具集,包括代码编辑器、调试器和项目管理工具,使得开发人员能够高效地编写和管理代码。在这个聊天系统的开发中,VS...
在IT行业中,Web服务是应用程序之间进行通信的一种方式,它允许不同系统间的互操作性。WSDL(Web Services Description Language)文件是定义这些服务接口的关键文档,它使用XML语法来描述服务的位置、使用的消息...
问题的根源可能在于“多次远程调用导致userToken丢失”。在Dubbo框架中,服务调用是基于RPC(Remote Procedure Call)的,每次调用都会携带必要的参数,包括隐式参数`userToken`。然而,如果一个服务调用另一个服务...
*** Ajax "Sys未定义"错误是一个常见的问题,它发生在***应用程序中使用AJAX时,通常会因为不同的原因导致Sys对象无法被正确定义或访问。要解决这个问题,需要根据具体情况进行排查和解决。 1. Web.config配置问题...
特别是在Web应用中,如何正确地处理中文等非英文字符变得尤为重要。Java作为一种广泛使用的编程语言,提供了多种机制来处理不同语言编码的问题。本文将详细探讨JSP和Servlet技术在处理中文乱码问题时的方法和技巧。 ...
日志记录在软件开发中至关重要,因为它可以帮助开发者理解应用程序的运行状态,尤其是在遇到错误或性能问题时。通过分析日志,开发人员可以定位问题的根源,进行调试,优化代码,以及确保系统的稳定性和安全性。...