业界动态
前端常用的性能实用优化方法有哪些?
2024-12-29 16:28

前端项目的性能优化是一个综合性的问题,需要从多个方面入手,以下是几大类的优化方案:移动端、图片、Javascript、css、html、页面内容、服务器、cookie。

前端常用的性能实用优化方法有哪些?

  • 1、保持单个文件小于25KB
    移动网站页面要求下载资源,如果文件过大,会大大减慢页面加载速度。

  • 2、打包内容为分段multipart文档
    由于HTTP请求每一次都会执行三次握手,每次握手都会消耗较多的时间。使用multipart,实现了多文件同时上传,可用一个HTTP请求获取多个组件。

俗称 CSS 精灵、雪碧图,雪花图等。即将多张小图片合并成一张图片,达到减少 HTTP 请求的一种解决方案。可通过 CSS中的background 属性访问图片内容。这种方案同时还可以减少图片总字节数,节省命名词汇量。

图片占据资源极大,因此尽量避免使用多余的图片,使用时选择最合适的格式大小,然后使用智图压缩,同时在代码中用Srcset来按需显示。(切记不要过分压缩 可能会导致图片迷糊)

重设图片大小是指在页面、CSS、Javascript等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能。

DataURL图片没有使用图片的压缩算法文件会变大,并且要解码后再渲染,加载慢耗时长。

图片对页面加载速度影响非常大。比如,当一个页面内容比较多的时候,加载速度就会大大的降低,极大的影响到用户体验 。更有甚者,一个页面可能会有几百个图片,但是页面上仅仅只显示前几张图片,那其他的图片是否可以晚点加载用于提高性能。具体可见 >>

放在前面js加载会造成阻塞,影响后面dom的加载

在现实环境中使用外部文件通常会产生较快的页面,因为 Javascript 和 CSS 有机会被浏览器缓存起来。对于内联的情况,由于 HTML 文档通常不会被配置为可以进行缓存的,所以每次请求 HTML 文档都要下载 Javascript 和 CSS。所以,如果 Javascript 和 CSS 在外部文件中,浏览器可以缓存它们,HTML 文档的大小会被减少而不必增加 HTTP 请求数量。

压缩文件是为了降低网络传输量,减少页面请求的响应时间。

操作dom会产生几种动作,极大的影响渲染的效率。其中layout(布局)和paint(绘制)是最大的。

开销:加载-》解析和编译-》执行
js的解析和编译,执行要花很长时间(谷歌开发工具中的performance中可以查看。选中main主线程中的某一段。)

解决方案:

代码拆分按需加载
tree shaking代码减重
避免长任务
requestAnimationframe和repuestIdleCallback进行时间调度

解析js代码成抽象语法树-》字节码-》机器码
编译过程会进行优化
运行时可能会发生反优化

脚本流:边下载边解析
字节码缓存:常用的字节码会存起来(这个文件用到其他的文件也用到的参数)
函数懒解析:先解析用到的

保证对象初始化顺序一致(对象初始化时v8会生成隐藏属性以便后续复用并且是按照顺序排序的)
不要直接赋值对象新属性(追加的属性需要通过描述数组间接查找)
使用数组代替类数组(v8会对数组进行优化)比如先将类数组转化成数组
避免读取数组越界(比如for循环多查找1个下标会照成性能相差6倍)

数组也是对象,当找不到对应下标的时候回沿着原型链向上找造成额外开销
业务上无效

通过变量是否能被访问到来判断内存是否释放。

局部变量: 函数执行完没有闭包引用会被标记回收

全局变量: 直到浏览器被卸载页面释放

回收机制:
引用计数:每调用一次加一,当计数为0的时候进行回收。缺点是不能解决循环引用(例如a对象依赖于b对象,标记清除(垃圾回收): 从根节点去访问,当访问到不能被访问的对象就进行标记然后进行垃圾回收。(当a对象
解决:避免意外的全局变量;避免反复运行引发的闭包;避免脱离的dom元素没有被回收(所以react有ref这个api)。

  • 1、把样式表放在标签中
    css放在head标签中比css放在body标签尾部少了一次构建RenderTree, 一次计算布局和一次渲染网页, 因此性能会更好。
  • 2、使用替代@import
  • 3、不要使用filter
  • 4、避免元素类型转化(数组中放多种类型不利于v8引擎优化代码)
    • 降低css对渲染的阻塞(按需加载,放在dom前面加载)
    • 利用pu完成动画(前面讲到的复合)
    • 使用contain进行优化(优化强度大。例如: contan:layout告诉浏览器这个节点内部的子元素和外面的使用font-display进行优化:让文字更早的显示在页面上,减轻文字闪动的问题
  • 减少iframes使用
  • 压缩空白符
  • 避免嵌套层次太深
  • 避免使用table布局
  • 减少没必要的注释
  • 删除元素默认属性(比如默认checkbox等)
  • 减少HTTP请求数
  • 减少DNS重定向
  • 缓存AJax请求
  • 延迟加载
  • 预加载
  • 减少DOM元素的数量
  • 划分内容到不同域名
  • 尽量减少使用iframe
  • 避免404错误
  • 使用CDN
  • 添加Expires或Cache-Control响应头
  • 启用Gzip
  • 配置Etag
  • 尽早输出缓冲
  • Ajax请求使用GET方法
  • 避免图片src为空
  • 传输加载优化
    服务器启用gzip
  • keep Alive(持久TCP连接)
    keepalive_requests 100;请求100次后开启http的keepAlive有keepalive_timeout 65;65秒后关闭。
  • http缓存
    最好是用no-cache(要用的时候需要在服务器那边Etag验证下)
  • service workers
    • 加速重复访问
    • 离线支持
  • 减少cookie大小
  • 静态资源使用无cookie域名
  • 资源压缩、传输压缩、代码拆分、tree shaking、http缓存
  • 路由懒加载、预渲染、inlineCss、虚拟列表
  • prefetch和preload调整加载顺序js内存管理
    以上就是本篇文章【前端常用的性能实用优化方法有哪些?】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/4961.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
金秀贤记者会上“否认与金赛纶未成年时交往”
大家好呀~这里是你们的小娱!今天韩娱圈又爆出重磅炸弹!据韩国媒体3月31日报道,演员金秀贤31日突然召开紧急记者会,首度回应与
差价1000元!OPPO Watch X和华为WATCH4 Pro,谁才是最佳之选?智能腕表手机「差价1000元!OPPO Watch X和华为WATCH4 Pro,谁才是最佳之选?」
近年来,智能手表逐渐取代传统腕表,成为了许多年轻人和商务人士的新宠。但要说能做到【真智能】的产品,除了Apple Watch之外,
华为三折叠手机,女生实现裸眼3D体验的神奇之选裸眼3d手机「华为三折叠手机,女生实现裸眼3D体验的神奇之选」
华为三折叠手机是女生实现裸眼3D体验的神奇之选,其独特的折叠设计不仅方便携带,还为用户带来全新的视觉体验。该手机采用先进技
OPPO Find X3和OPPO Find X3 Pro详细对比评测手机看家「OPPO Find X3和OPPO Find X3 Pro详细对比评测」
目前高端旗舰市场,Find X3系列绝对是一大热门,OPPO Find X3系列共有两款机型,分别为OPPO Find X3和OPPO Find X3 Pro。虽然一
模拟人生4苹果官方正版 v46.0.0.156548 ios版模拟人生手机版「模拟人生4苹果官方正版 v46.0.0.156548 ios版」
模拟人生4是一款模拟经营类游戏。游戏中玩家可以体验不同职业的人生,你可以在城市中找一份工作,同时还能装修自己的房子。玩家
火山冒险王冒险王手机版「火山冒险王」
火山王是一款经典而有趣的冒险游戏。你可以在这里自由选择自己喜欢的职业,进行突破和冒险。它整体以魔幻风格建造,加上大量的,
探讨新手机为何耗电快的多重原因为什么手机耗电快「探讨新手机为何耗电快的多重原因」
为什么新手机耗电快 Why New Phones Drain Battery Quickly随着科技的不断进步,智能手机的功能越来越强大,性能也越来越高。然
你有酥胸我有美臀 斗鱼龙珠女主播大战一触即发这是我的战争手机版「你有酥胸我有美臀 斗鱼龙珠女主播大战一触即发」
  斗鱼三骚抵制赵世熙的内斗还历历在目,这边龙珠斥资2000W签约的多位韩国女主播又让众姐们儿危机感爆棚,显然斗鱼与龙珠的女
苹果手机备忘录删除了怎么恢复?3个技巧,教你迅速还原苹果手机数据恢复「苹果手机备忘录删除了怎么恢复?3个技巧,教你迅速还原」
​​你有时候是不是会因为着急找某些资料或者是信息,着急忙慌地不小心按错了按钮,结果就把苹果手机里的备忘录给删了呢?当发生
如何在安卓手机中安装Arch Linux chroot 容器linux手机「如何在安卓手机中安装Arch Linux chroot 容器」
chroot是Linux发行版中一个用于将进程隔离在一个受限空间的软件,而由于将进程隔离到了受限空间中,我们只需要将系
相关文章