CSS硬件加速触发GPU崩溃

时间:2015-09-30 08:54:19

标签: css gpu

在webapp上,我正在为我工​​作,我的团队有一些用户在使用我们的应用时遇到浏览器崩溃。然后他们被迫重启浏览器。该问题出现在不同 OS 的所有浏览器中。我们在浏览器中找不到任何可能影响此问题的插件。我们一直在跟踪我们自己的日志,Windows日志等,没有任何可能与问题相关的发现。当我们成功触发问题时,我们还会看到 CPU - 和 Hardrive 用法。但没有什么是图表。这让我和我的团队怀疑 GPU 有问题。

我们进行了一些研究,发现 CSS 中的动画,过渡,不透明度,变换可以触发 CSS崩溃。但是我们没有知识或经验来得出结论是谁是问题。

我们正在使用硬件加速 CSS ,如:

rake db:migrate

还有一些我们还使用了一些 CSS 旋转关键帧动画:

transform: translate3d(0,0,0) translateZ(0);

在一些遇到浏览器崩溃的用户中,我们实施了功能开关功能开关会删除所有转场转换关键帧动画。他们一直告诉我们,他们认为功能开关是一种改进。但我们无法判断它是否仅仅是安慰剂,还是真的有帮助。

所以在我们从应用程序中删除一堆转换和转换之前,我认为如果有其他人遇到同样的问题,那么值得一试。欢迎所有的想法和想法。

值得一提的是,我们的网络应用程序使用 knockout.js

单页应用

1 个答案:

答案 0 :(得分:0)

我遇到了崩溃iOS-Safari浏览器的同样麻烦。我写了一些注意时间贴在下面 -

  
      
  1. 不要在转换属性中使用all,只使用要设置动画的属性(避免转换:全部400ms,尝试转换:颜色   400毫秒,背景400毫秒)
  2.   
  3. 尽可能多地使用关键帧动画
  4.   
  5. 减小文件大小
  6.   
  7. 减少请求并优化图片
  8.   
  9. 使用translate3D,这将迫使iOS使用3D加速和更好的内存分配。
  10.         

    如果您仍然不幸,请删除iOS和的所有转换   使用JS动画,我知道当你不能使用库时它很昂贵   像TweenMax,但这是唯一的解决方案。

         

    注意:JS动画可能会影响您的动画帧速率。使用rAF   (请求帧动画)可能会增强一点。

         

    *** CSS3动画非常需要动画量少的网站,输出~60 FPS,但JS确实根据   设备

希望你发现它很有用。我建议你坚持使用新功能,只需尝试修复它。

祝你好运。