浏览器探测时的性能优化

浏览器探测时的性能优化



在进行浏览器探测时,会基于浏览器的功能就行分支判断,导致做大量的重复工作。针对这类问题,可以有两种解决方案:延迟加载和预先加载。 
基于浏览器功能的探测:

  1. function addHandler(ele,eventType,hadler){
  2. if(ele.addEventListener){
  3. ele.addEventListener(eventType,handler,false);
  4. }else { //IE
  5. ele.attachEvent(‘on‘+eventType,handler);
  6. }
  7. }

1、延迟加载 
延时加载,即在函数被调用前,不会对浏览器类型进行判断, 
在函数被调用时,再进行浏览器检测。

  1. function addHandler(ele,eventType,hadler){
  2. if(ele.addEventListener){
  3. addHandler=(ele,eventType,hadler){ //覆盖现有的事件绑定函数
  4. ele.addEventListener(eventType,handler,false);
  5. };
  6. }else if(ele.attachEvent){ //IE8及以下
  7. addHandler=(ele,eventType,hadler){
  8. ele.attachEvent(‘on‘+eventType,handler);
  9. };
  10. }else{
  11. ele[‘on‘+eventType]=handler;
  12. }
  13. addHandler(ele,eventType,hadler); //调用新函数(重写后)
  14. }

调用延时加载函数时,只有在第一次调用时,会对浏览器进行探测,之后都会调用重写后的新函数,不再进行检测。因此,只有在第一次调用时,会消耗较长时间,之后都会很快。 
适用性:函数在页面中不会立即调用时,延迟加载是最好的选择。 
2、条件预加载 
在脚本加载期间进行浏览器检测,而不会等到函数被调用。检测操作依然只执行一次,只不过来得更早一些。

  1. var addHandler=document.body.addEventListener ? function (ele,eventType,hadler){ ele.addEventListener(eventType,handler,false);
  2. } : function (ele,eventType,hadler){
  3. ele.attachEvent(‘on‘+eventType,handler);
  4. }

适用性:一个函数马上要用到,并且在整个页面中频繁调用

时间: 2024-10-07 19:07:18

浏览器探测时的性能优化的相关文章

CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

目录 一.浏览器兼容 1.1.概要 1.2.浏览器内核 1.3.浏览器市场份额(Browser Market Share) 1.4.兼容的一般标准 1.5.CSS Reset 1.6.CSS Hack 1.6.1.条件注释法 1.6.2.样式内属性标记法 1.6.3.选择器前缀法 1.7.文档模式 (X-UA-Compatible) 1.8.javascript兼容 二.前端性能优化 2.1.概要 2.2.减少HTTP请求数量 2.2.1.图片地图 2.2.2.精灵图片(Sprite) 2.2.

DO-DTO相互转换时的性能优化

一般情况下,DO是用来映射数据库记录的实体类,DTO是用来在网络上传输的实体类.两者的不同除了适用场景不同外还有就是DTO需要实现序列化接口.从DB查询到数据之后,ORM框架会把数据转换成DO对象,通常我们需要再把DO对象转换为DTO对象.同样的,插入数据到DB之前需要将DTO对象转换为DO对象然后交给ORM框架去执行JDBC. 通常用到的转换工具类BeanUtils是通过反射来实现的,实现源码如下 public static <T> T convertObject(Object source

DevExpress ChartControl大数据加载时有哪些性能优化方法

DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等): Series.View.LineMarkerOptions.Visible =false. 2. 关闭图表的滚动与缩放功能,手动调整范围,这样将大大减少所需计算的个数. 3. 将 ChartControl.RefreshDataOnRepaint属性设为false 4. 将 ChartContr

Java编程性能优化一些事儿【转】

原文出处: 陶邦仁 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的: 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信.

Android APP 性能优化的一些思考

说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用.相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android 系统在流畅性方面不如 IOS 系统,为何呢,明明在看手机硬件配置上时,Android 设备都不会输于 IO

Android app 性能优化的思考--性能卡顿不好的原因在哪?

说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用.相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android 系统在流畅性方面不如 IOS 系统,为何呢,明明在看手机硬件配置上时,Android 设备都不会输于 IO

Java性能优化的50个细节

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的: 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信. 2. 尽量避免随意使

Java中性能优化的45个细节

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问: 控制实例的产生,以达到节约资源的目的: 控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信. 2. 尽量避免随意使用静态变量 当某个

C++应用程序性能优化(一)——应用程序性能优化简介

C++应用程序性能优化(一)--应用程序性能优化简介 一.程序性能优化简介 1.程序性能优化简介 在计算机发展的早期阶段,硬件资源相对而言是非常昂贵的,CPU运行时间与内存容量给程序开发人员设置了极大限制.因此,早期的程序对运行性能和内存空间占用的要求是非常严格的,很多开发人员为了减少1%的CPU运行时间,为减少几十个甚至几个字节而不懈努力.随着计算机技术的快速发展,硬件资源变得相对便宜.但如果认为软件开发时,程序的性能优化不再重要,硬件将解决性能问题也是片面的.计算机硬件的发展解决了部分软件的