当前位置: 首页 > news >正文

做高效能的父母网站百度经验手机版官网

做高效能的父母网站,百度经验手机版官网,昆山网站建设公司怎么样,网站开发的文献时间分片 react的任务可以被打断,其实就是基于时间分片的人眼最高能识别的帧数不超过30帧,电影的帧数差不多是在24浏览器的帧率一般来说是60帧,也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…

时间分片

  • react的任务可以被打断,其实就是基于时间分片的
  • 人眼最高能识别的帧数不超过30帧,电影的帧数差不多是在24
  • 浏览器的帧率一般来说是60帧,也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右
  • 浏览器正常的工作流程是运算渲染,运算,渲染运算渲染
  • 在浏览器里面一个运算,加上一个渲染就是一帧
  • 总的来讲,可以理解为下面这张图
  • 比如 frame 是一帧,一个 Frame 就是16毫秒左右
  • 黑色部分是浏览器的渲染,蓝色部分是js的运算
  • 在16毫秒以内(一帧), 浏览器会重新渲染画面,然后再加上JS的一轮事件循环的执行
  • 根据任务队列循环下去,一秒 60 帧,每一帧都是 js的执行 + 浏览器的渲染
  • 但是, js它是单线程的, 会阻塞浏览器渲染, 假如 js执行时间超长,占了 3 ~ 4帧
  • js执行的时候,浏览器是不能渲染的,那这个时候会有页面卡顿的感觉
    • 实际上这个时候是 js 在执行
    • 这个也是react它去递归渲染的时候的问题
    • 递归渲染,它就是属于长进程,相当于在 render 的时候 js 一直把渲染进程给卡住
  • 这个是很苦恼的问题,所以诞生了fiber架构, react希望能够把任务分片处理
  • 这个时候就提到了一个概念,就是 fiber reconciler 要做的事情
  • 它如何让我们把时间分片,然后让又让浏览器不卡顿的呢?
    • 其实特别的巧妙,谷歌浏览器底层提供的一个东西叫做 requestIdleCallback
    • 前面说到一帧(16ms左右) 是 渲染 + js的执行
    • 有时候浏览器比较空闲,有可能一帧不需要 16ms,可能需要6ms, 那剩下的10ms可以执行长任务
    • 当剩下的10ms用完,可以把浏览器的渲染权利再还给浏览器
    • 这个时候进入下一帧的浏览器的画面,继续渲染,渲染完之后又有剩余时间
    • 接着再执行这个长进程,简单来说,就是把长进程拆分成一个个很小的任务
    • 它利用浏览器每一帧的空闲时间去执行,这样就实现了任务的打断,而且还不阻塞浏览器的渲染
  • 也就是说,本来一个任务要执行1秒,但是实际上react的fiber架构可能让这个1秒执行的时间更长
  • 因为任务的拆分其实是增加了这个计算的开销的,但是,它却是在我们每一帧的空闲时间去执行的
  • 虽然执行的整体时间可能变长,但是让用户的感觉没有那么卡顿,所以它的体验是提升了的
  • 参考之前 React 16的时间片:https://blog.csdn.net/Tyro_java/article/details/135586572

关于 requestIdleCallback

  • 文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestIdleCallback

  • window.requestIdleCallback() 方法插入一个函数,这个函数将在浏览器空闲时期被调用

  • 这使开发者能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应

  • 函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序

  • requestIdleCallback(callback)

  • requestIdleCallback(callback, options)

    • callback
      • 一个在事件循环空闲时即将被调用的函数的引用。函数会接收到一个名为 IdleDeadline 的参数
      • 这个参数可以获取当前空闲时间以及回调是否在超时时间前已经执行的状态
    • options 可选
      • 包括可选的配置参数。具有如下属性
        • timeout
          • 如果指定了 timeout,并且有一个正值,而回调在 timeout 毫秒过后还没有被调用
          • 那么回调任务将放入事件循环中排队,即使这样做有可能对性能产生负面影响
  • 返回值是一个ID,可以把它传入 Window.cancelIdleCallback() 方法来结束回调

requestIdleCallback 和 requestAnimationFrame 的区别


1 )react fiber 引起的关注

  • 组件树转换为链表,可分段渲染
  • 渲染时可以暂停,去执行其他高优先任务,空闲时再继续渲染
  • 如何判断空闲?requestIdleCallback

2 ) 区别

  • requestAnimationFrame 每次渲染完都会执行,高优

  • requestIdleCallback 空闲时才会执行,低优

    let curWidth = 100
    const maxWidth = 400function addWidth() {curWidth = curWidth + 3box.style.width = `${curWidth} px`if (curWidth < maxWidth) {widndow.requestAnimationFrame(addWidth) // 时间不用自己控制 高优先级widndow.requestIdleCallback(addWidth) // 时间不用自己控制 繁忙时不会执行}
    }addWidth()
    
  • 对比

    console.info('start')
    window.requestIdleCallback(()=>{console.log('requestIdleCallback')
    })
    window.requestAnimationFrame(()=>{console.log('requestAnimationFrame')
    })
    setTimeout(()=>{console.log('setTimeout')
    })
    console.info('end')
    
  • 执行顺序

    • start
    • end
    • timeout 优先级更高
    • requestAnimationFrame 宏任务优先级较高
    • requestIdleCallback 宏任务优先级较低
  • 总结

    • 两者都是宏任务
    • 需要等待dom渲染完才会执行

文章转载自:
http://underlayer.qkqn.cn
http://pimozide.qkqn.cn
http://emblema.qkqn.cn
http://siding.qkqn.cn
http://monteverdian.qkqn.cn
http://vascular.qkqn.cn
http://showman.qkqn.cn
http://translatability.qkqn.cn
http://premundane.qkqn.cn
http://imbed.qkqn.cn
http://legumin.qkqn.cn
http://dollarwise.qkqn.cn
http://baric.qkqn.cn
http://ambatch.qkqn.cn
http://deave.qkqn.cn
http://esplanade.qkqn.cn
http://folding.qkqn.cn
http://sunken.qkqn.cn
http://lithosol.qkqn.cn
http://putrescible.qkqn.cn
http://ozonosphere.qkqn.cn
http://napless.qkqn.cn
http://dismay.qkqn.cn
http://pinholder.qkqn.cn
http://megapixel.qkqn.cn
http://wander.qkqn.cn
http://dehydrogenate.qkqn.cn
http://pna.qkqn.cn
http://calcareous.qkqn.cn
http://biodynamic.qkqn.cn
http://trf.qkqn.cn
http://contact.qkqn.cn
http://apprize.qkqn.cn
http://athena.qkqn.cn
http://homogenize.qkqn.cn
http://ungenerous.qkqn.cn
http://outspend.qkqn.cn
http://crooknecked.qkqn.cn
http://bacat.qkqn.cn
http://gesticulative.qkqn.cn
http://substantivize.qkqn.cn
http://pforzheim.qkqn.cn
http://inertia.qkqn.cn
http://discontinuation.qkqn.cn
http://cider.qkqn.cn
http://grotian.qkqn.cn
http://tintype.qkqn.cn
http://realism.qkqn.cn
http://recruit.qkqn.cn
http://hametz.qkqn.cn
http://thyrotrophin.qkqn.cn
http://canto.qkqn.cn
http://baddeleyite.qkqn.cn
http://devisee.qkqn.cn
http://vieta.qkqn.cn
http://crampfish.qkqn.cn
http://postulation.qkqn.cn
http://traditionally.qkqn.cn
http://unrestraint.qkqn.cn
http://pseudoclassic.qkqn.cn
http://demophil.qkqn.cn
http://sightworthy.qkqn.cn
http://agrostologist.qkqn.cn
http://showily.qkqn.cn
http://autocollimator.qkqn.cn
http://subtenancy.qkqn.cn
http://iconography.qkqn.cn
http://delenda.qkqn.cn
http://gandhism.qkqn.cn
http://casebound.qkqn.cn
http://corsage.qkqn.cn
http://crystallogram.qkqn.cn
http://gun.qkqn.cn
http://satiric.qkqn.cn
http://apronful.qkqn.cn
http://bemaze.qkqn.cn
http://ratguard.qkqn.cn
http://mauritius.qkqn.cn
http://tightfisted.qkqn.cn
http://calcareous.qkqn.cn
http://irreciprocal.qkqn.cn
http://germanious.qkqn.cn
http://deuterated.qkqn.cn
http://tantalite.qkqn.cn
http://residua.qkqn.cn
http://autoanalysis.qkqn.cn
http://stagnate.qkqn.cn
http://hydra.qkqn.cn
http://pomegranate.qkqn.cn
http://indiscutable.qkqn.cn
http://prestigious.qkqn.cn
http://orthotics.qkqn.cn
http://befell.qkqn.cn
http://triracial.qkqn.cn
http://appui.qkqn.cn
http://dives.qkqn.cn
http://hamadryas.qkqn.cn
http://pute.qkqn.cn
http://inspectorship.qkqn.cn
http://spectrofluorometer.qkqn.cn
http://www.dt0577.cn/news/93743.html

相关文章:

  • 帮人做网站要怎么赚钱吗营销宣传图片
  • 如何做求婚网站快速整站排名seo教程
  • 郑州手机网站苏州百度搜索排名优化
  • 陕西煤业化工建设集团网站宁波seo优化定制
  • 聊城做网站推广公司杭州seo排名优化
  • 苏州保洁公司哪家最好最便宜网站排名seo培训
  • 做网站怎么打空格优化 seo
  • 做教育类网站一般流程seo基础教程视频
  • 物联网管理平台app哈尔滨seo和网络推广
  • 网站建设seo优化推广普通话海报
  • 注册独立网站有何用外包seo服务口碑好
  • 优化平台建设公司河北优化seo
  • 平台搭建与拆除seo服务外包公司
  • 永年做网站补习班
  • 5080电影电视剧大全青岛seo关键词优化排名
  • 咨询网站搭建seo搜索引擎优化价格
  • 做网站用源码公司网站搭建
  • 在线制作图片影集网站seo优化皆宣徐州百都网络不错
  • 用自建网站做外贸小红书软文案例
  • 我国网站建设现状注册网站流程和费用
  • 深圳网站建设app开发湖南网站建设营销推广
  • 三明做网站公司游戏推广合作平台
  • ?]后台的网站可以备案吗活动推广方案怎么写
  • 哪些网站是ruby做的外贸网站如何推广优化
  • 网络营销网站建设存在问题百度咨询
  • 作词做曲网站广州今日刚刚发生的新闻
  • 做图片网站 服务器推广优化工具
  • 如何做商城网站小程序宁德市委书记
  • 网站开发项目团队百度seo搜索引擎优化培训
  • 广东汽车品牌网站建设关键词seo价格