js里面可以提升性能的有哪些方法

1.懒加载

  常见的就是图片的懒加载效果,每次浏览网页的时候,不是一次性将网页中的图片都加载过来,而是将可见范围内的图片加载过来,等到用户浏览下面网页的时候,再开始加载没有加载出来的图片

2. 事件委托

  事件委托就是给当前要绑定事件的父元素绑定要绑定的事件,通过事件源来判定当前点击的是哪个元素。这样做是为了减少事件的绑定次数,提高性能,而且还可以实现对未来元素的绑定。

3.函数的节流与放流

函数的防抖就是通过定时器,来稀释事件触发的频率,只有停止对当前事件的触发,才会执行当前事件要执行的函数。

  函数的节流就是尽可能的较少事件触发的频率,通过延时器和开关门来实现。

4. 惰性函数

  惰性函数是减少函数的逻辑判断次数,只有在第一次执行的时候,才会进行判断,之后都不进行判断,而是直接进入函数,执行即可。

5.文档碎片

  在页面中创建多个元素,每次进行创建于添加,多次进行dom操作,消耗网页性能,可以在每次创建完元素之后,放入文档碎片,最后一次性放入页面中。

6.回流与重绘

  当渲染树中的一部分或者全部因为元素的尺寸、布局、隐藏等改变而需要重新构建的时候,这时候就会发生回流。

每个页面都至少发生一次回流,也就是页面第一次加载的时候。

在回流的时候,浏览器会使渲染树中受到影响的元素部分失效,并重新绘制这个部分的渲染树,完成回流以后,浏览器会重新绘制受到影响的部分元素到屏幕中,这个过程就是重绘

7. 循环遍历arr dom节点集合,先把.length缓存在一个变量中,为了减少页面中计算的次数

8.在进行鼠标按下,移动抬起实现拖拽的时候,拖拽三剑客在使用dom二级事件触发的时候,清除鼠标移动事件的时候,也会使用到变量的缓存。

原文地址:https://www.cnblogs.com/lxz123/p/11748740.html

时间: 2024-10-08 19:35:00

js里面可以提升性能的有哪些方法的相关文章

用直接路径(direct-path)insert提升性能的两种方法

1.传统串行insert方式 常见的insert方式有两种: (1)      insert into table_name values(....) (2)      insert into target_table select* from source_table 上面这两种常规的插入式,默认都是在串行方式下的插入,会将insert的数据写入buffer_cache,插入前检查表中是否有block中存有空闲空间可以追加插入,并写入redo log和数据的undo. 2.直接路径(direc

提升性能-事件委托技术

--- title: 提升性能——事件委托技术 date: 2016-05-11 22:13:43 tags: [javascript,improving performance, font-end] --- 提升页面性能之事件委托技术 (整理摘选自<Javascript高级程序设计>)概述 利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 实际例子 HTML部分 <ul id = "mylinks"> <li id = "g

paip.提升性能3倍--使用栈跟VirtualAlloc代替堆的使用.

#----为什么要设计堆栈,它有什么独特的用途? 为了性能 ....  堆比栈的性能 也有的说法为了编程容易...这个是错误的.因为使用堆+func也能实现编程简单地.. #----为什么stack 比堆快,stackAccess 要快两到三倍 主要的2点::  使用堆额外的操作多,而且机器硬件上直接支持栈操作.. 堆栈都是一段内存条中的内存区域,感觉上,应该上没有多大的访问速度差别..但是,实际上,还是有很大的的速度效率区别.. 1.存取路径短1倍. 堆的分配/释放都要比栈要慢的多 结论:可以

Android ViewPager Fragment使用懒加载提升性能

?? Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Android ViewPager内在的加载机制,导致一个比较严重的加载性能问题,具体来说,假设一个ViewPager中有n多个Fragment,那么ViewPager在初始化阶段将一次性的初始化FragmentPagerAdapter中的至少3个Fragment(如果Fragment多于3),创建和加载Fra

浅谈 js 下 with 对性能的影响

这几天多次看到有博主们在写 with 的文章,这货确实非常方便,但是却是个性能杀手,所以一直都是上不得台面的.那么他究竟会让效率低下到什么程度呢?先来看下 with 是如何的便捷吧.. // 正常调用 console.log(location.host); console.log(location.pathname); // 在 with 下 with (location) { console.log(host); console.log(pathname); } 如果不影响性能,确实是非常霸气

深入理解js的变量提升和函数提升

一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分.上个简历的例子如: 1 2 3 4 5 6 7 8 9 10 console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // unde

通过jdbc使用PreparedStatement,提升性能,防止sql注入

为什么要使用PreparedStatement? 一.通过PreparedStatement提升性能 Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句.Statement每执行一次都要对传入的SQL语句编译一次,效率较差.     某些情况下,SQL语句只是其中的参数有所不同,其余子句完全相同,适用于PreparedStatement.PreparedStatement的另外一个好处就是预防sql注入攻击     PreparedStatement是接口,继承自State

润乾集算报表提升性能之过程优化

报表出现性能问题需要对数据源计算进行优化时,执行路径难以确定从而被干预是阻碍报表优化的难题之一.由于数据库执行路径对开发人员不透明,报表优化需要指定执行路径时,程序员会很难甚至无法干预.而一般报表工具不具备强计算能力,大部分计算仍然要依靠数据库进行,这就导致很多报表优化效果不理想. 不同于一般报表工具,润乾集算报表内置了专门用于数据计算的集算引擎,开发人员可以通过编写集算脚本完成报表数据源准备.与数据库执行SQL路径不可控相比,集算脚本的执行过程是可控的,开发人员可根据实际情况编写或更改计算执行

数据库提升性能

Mysql Blob通过压缩来提升性能 对于blob字段,由于当前版本较低,5.0目前文件格式默认为compact,还不支持compress格式的压缩.我觉得可以采用如下方式来节省空间.1.通过应用服务器端的压缩,比如zlib算法,进行压缩然后存入数据库.当然应用需要先读数据,压缩,然后再写新的表,然后互相rename即可.好处:         1.1 通过压缩,可能app端会带来CPU的上升,但是通过把这个过程转移到app层,可以减少db层的压力.         1.2 同时由于压缩后数据