搞定Chrome运行时的性能、内存问题 [太实用了]

647次阅读  |  发布于4年以前

初诊

打开Chrome隐身模式

打开测试地址

可以看到页面蓝色小方块在运动

限制CPU速度

优化前后的效果对比

图中蓝色标记出的区域, 即FPS记录的信息

放大某一区域, 可以看到, FPS由两部分组成:

小结

CPU是否充满颜色和FPS存在联系

可以看到:

了解FPS快捷工具

找到瓶颈

了解 Main

追溯问题, 定位代码问题

进一步分析问题位置

对比优化的效果

前端巅峰公众号小编补充

由于链接是gw的,这边有的人可能访问不了

优化思路

避免强制同步布局

requestAnimationFrame(logBoxHeight);

function logBoxHeight() {
  // Gets the height of the box in pixels and logs it out.
  console.log(box.offsetHeight);
}
function logBoxHeight() {

  box.classList.add('super-big');

  // Gets the height of the box in pixels
  // and logs it out.
  console.log(box.offsetHeight);
}

避免布局抖动

function resizeAllParagraphsToMatchBlockWidth() {

  // Puts the browser into a read-write-read-write cycle.
  for (var i = 0; i < paragraphs.length; i++) {
    paragraphs[i].style.width = box.offsetWidth + 'px';
  }
}
// Read.
var width = box.offsetWidth;

function resizeAllParagraphsToMatchBlockWidth() {
  for (var i = 0; i < paragraphs.length; i++) {
    // Now write.
    paragraphs[i].style.width = width + 'px';
  }
}

特别提示

这次出现性能问题的关键点:读取了dom的offsetWidth、offsetTop等属性,会造成浏览器强制更新渲染队列并且重排-重绘

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8