Ajax(2) => 前端性能优化

2.前端性能优化

主要分为两大类:

1.减少Http的请求次数和请求大小

2.代码优化:

  • 有利于seo
  • 有利于扩展维护
  • 有利于减少性能消耗

3.DNS以及HTTP通性方式的优化

具体实现的方案:

  1. 尽量减少使用闭包的使用(原因:闭包会开辟不释放的私有占内存)

    • 方案A:给元素做循环绑定事件的时候,可以用冒泡事件(事件委托)来做,减少DOM绑定

    • 方案B:给元素做循环绑定事件的时候,可以用自定义属性绑定

    • 方案C:可以在最外层形成一个闭包,吧一些后续需要的公共信息进行存储(单例模式)

    • 方案D:尽可能手动的释放不被占用的内存…

  2. 尽量合并css和js文件

    (把需要引入的css和js都尽量各自合并到同一个css/js文件,减少请求次数,并且尽量把文件代码进行压缩,减少http请求资源大小)

    • 方案A:webpack这种自动化构建工具,可以帮我们实现代码的压缩和合并(工程化开发)

    • 方案B:在移动端开发(或者追求高性能的pc端开发,我们可以把css和js搞成内嵌式,在html里面写)

  3. 尽量使用字体图标或者SVG图标,来代替传统的PNG等格式的图片

    (字体图标是矢量图,不会失真,并且是基于代码写出来的,渲染速度快,相对比位图要小些)

  4. 减少对DOM的操作(主要减少DOM重绘[css发生改变时]和重排回流[DOM结构发生改变时])

    • 方案A:关于重排的分离读写

    • 方案B:使用文档碎片或者字符串拼接做数据绑定(DOM的动态创建)

  5. 在JS中避免嵌套循环(会增加很多循环次数)和死循环(浏览器卡死)

  6. 采用图片懒加载(延迟加载,目的是减少页面第一次加载过程中http的请求次数)

    步骤:开始加载的时候,所有图片都不发送http请求,而是给一张类似正在加载的一张背景图,当页面加载完成时,在屏幕可视区内的图片进行请求加载(让页面第一次打开速度变快)

  7. 利用浏览器和服务端的缓存技术(304缓存),把一些不经常更新的静态资源文件做缓存处理

    例如:JS,CSS,静态图片都可以做缓存

    原理:减少http请求大小(先向服务器发请求,服务器说你本地有缓存,让浏览器304本地拿取)

  8. 尽量减少css表达式的使用(老古董,不会写,就是在css中写js代码,用express写)

  9. css选择器解析规则是从右向左解析的,(.container .link a)这会先找到所有的a标签,再在.link下面赛选,所以尽量减少直接的标签选择器的使用

  10. CSS精灵图(也叫CSS雪碧图),吧所有相对较小的资源图片汇总到一张大图上,后期只需要决定定位到对应的小图片就行

  11. 减少对于cookie的使用(追主要的减少本地cookie存储内容的大小),因为客户端操作cookie的时候,这些信息总会在客户端和服务端之间和传来传去

  12. 页面中的数据获取采用异步编程和延迟分批加载,使用异步获取数据,是降低HTTP通道的堵塞,不会因为数据没有请求而耽误下面的信息加载,提高页面的打开速度(我们可以这样处理:需要动态绑定数据的区域先隐藏,等数据返回并且绑定完成后再显示)(延迟加载类似图片懒加载,是为了减少第一次http请求的次数)

  13. 页面中出现音屏视屏标签时候,不要让其去请求数据,而是等到我们点击播放再去加载(设置preload=“none”),这样点击视屏才会加载

  14. 在客户端和服务端进行信息交互时候,对于多项数据,我们尽可能基于json格式的数据进行传输(json数据资源偏小,并且处理方便,相对于XML格式传输才会有这个优势)

  15. 尽可能实现JS的封装,减少冗余代码,减少http的请求大小

  16. 减少递归的使用,避免死递归,避免发生嵌套式的栈内存开辟

  17. 使用window.requestAnimationFrame(JS中的帧动画代替传统的定时器动画)

  18. 避免使用iframe(不好管理样式,而且意思是相当于在一个页面加载了另外一个页面,消耗比较大)

  19. 利用H5提供的localStorage本地储存或者是manifest离线缓存,做一些本地存储,下一次页面加载可以直接从本地拿取,减少http的请求次数

  20. 基于Script调取js的时候,可以使用defer或者async来异步加载

  21. 重量级优化:CDN加速(非常烧钱的机器)

在这里插入图片描述

额外

  1. 把css放到上面,把js放到下面(先加载css是为了保证元素是带着样式渲染的,而js是操作DOM的,等到元素加载完成再操作)
  2. 能用css的前外不要用js ,能用原生搞定的,千万不要用插件,禁止使用flash,能用css做动画效果的千万不要用js,css的动画能开启硬件加速功能,渲染更加快
  3. 不要使用with,非常消耗性能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值