为啥“复合层”需要这么多时间?

Posted

技术标签:

【中文标题】为啥“复合层”需要这么多时间?【英文标题】:Why "Composite Layers" takes so much time?为什么“复合层”需要这么多时间? 【发布时间】:2015-10-03 11:05:00 【问题描述】:

我正在使用无限滚动和数据延迟加载来分析列表。什么会导致这个漫长的“复合层”阶段?

如果您对列表的详细信息感兴趣:

列表的物理行元素数量有限,并且使用 “transform: translate3d(...)”在滚动时重新排序。 Chrome 在单独的图层中绘制每一行。 整个浏览器页面最多只有 25 层。

【问题讨论】:

如果您有一个指向您正在调试的页面的链接,这将非常有帮助。在没有看到网页的情况下很难调试任何东西。根据我从您的帖子中收集到的信息,您似乎有一些动画正在进行,这可能是您问题的根源。 很难说没有看到实际页面,但是如果您在滚动时不断变换(如您所描述的),那么这将解释一个大的复合阶段 - 变换由合成器线程执行GPU的帮助。见:csstriggers.com/transform 【参考方案1】:

没有链接,很难确定 - 但从所有“紫色”的外观(在您的第一个屏幕截图中),您可能使用了太多包含以下任何属性的元素:

A) 有position: fixed;

B) 在动画之前和期间使用transform

C) 同时使用过多的keyframes(例如在延迟加载时追加行)

编辑:升级您的 Chrome 版本 - 性能取代了时间轴,并提供了有关您可能正在寻找的详细信息的更多见解。

【讨论】:

以上是关于为啥“复合层”需要这么多时间?的主要内容,如果未能解决你的问题,请参考以下文章

Html5 Canvas“复合层”导致长帧

为啥通过 ghostscript API 渲染图像需要这么多时间?

为啥我的 CSS 动画会消耗这么多资源?

为啥 React 需要这么多 node_modules?如何限制加载所有这些文件以使其值得使用 React?

为啥 Java 中的 HashSet 占用这么多内存?

为啥 IEEE 754 保留这么多 NaN 值?