一、问题描述

1、为什么我的firefox经常会卡住

https://www.firefox.net.cn/read-50548

2、为什么firefox还会花掉呢?

https://www.firefox.net.cn/read-50563

3、如图firefox关闭标签卡的时候总是花屏?

http://zhidao.baidu.com/question/809458109683147532.html

4、解决Firefox33版本窗口或页面显示问题

http://bbs.kafan.cn/thread-1779336-1-1.html

5、浏览器最近切换网页或者关闭网页会卡屏是怎么回事?

http://mozilla.com.cn/thread-326546-1-1.html

6、火狐33版 omtc开启bug

http://bbs.kafan.cn/thread-1785249-1-1.html

二、解决方法

1、firefox浏览器地址栏输入:about:config

2、搜索:layers.offmainthreadcomposition.enabled

双击改为false

三、原因分析

1、firefox33开始在在 Windows 平台默认开启 OMTC

https://www.firefox.net.cn/read-49823

OMTC(Off Main Thread Compositing,非主线程内合成)的目的是改善浏览器响应速度,具体技术细节非常复杂,因为需要深入了解 Firefox 线程和绘制引擎的运作。老实说,作为一名普通用户,我完全不想去深入了解,所以我只能结合一些文章简单来说说 OMTC 是干什么的。

Firefox 的主线程需要处理很多事件,比如最重要的页面载入、图片的解码和绘制、CSS 动画的运行、JavaScript 代码的执行等等。但是因为各种原因,比如 JS 代码写的不好,图片太大等原因会导致主线程执行时间变长,给用户感受就是浏览器变慢变卡。这就需要将一部分次重要的工作脱离主线程,在第二线程中执行。

Firefox 所载入的页面会被分为几个层(Layer),比如网页内容、视频、背景、图片、动画等等,他们在呈现给用户之前会被组装为帧(Frame),这个过程就叫合成(Composition),OMTC 就是将一些合成过程脱离开主线程来执行,尤其是利用硬件加速功能来将图像的合成通过 GPU 来执行。这样主线程负担减轻了,自然浏览器性能就显著提高了。另外,它也是今后Firefox 实现多进程的一个重要的前提和基础。

OMTC本意为改善火狐响应速度,但在部分系统上可能出现标签页残影,滚动时画面黑块、黑屏等问题。遇到这些问题的用户推荐关闭该功能。