日常使用火狐发现速度还是比不上Chrome。按理说,火狐换上了量子引擎,又经过那么多次优化,速度应该有明显的提升才对。
偶然之下,才发现罪魁祸首是我关闭了硬件加速。
为了解决 Window 糟糕的字体渲染,我使用了Mactype,同时也对firefox进行了一些调整:
将默认的
gfx.content.azure.backends;direct2d1.1,skia,cairo
改为:
gfx.content.azure.backends;direct2d1.1,cairo,skia
将 gfx.direct2d.disabled 改为 true
后来,偶然在 about:support 里的“决策日志”这一项发现了一些有趣的信息:
DIRECT2D disabled by user: Disabled via gfx.direct2d.disabled
WEBRENDER opt-in by default: WebRender is an opt-in feature blocked by runtime: Qualified enable blocked
WEBRENDER_QUALIFIED blocked by env: Not Nvidia
OMTP broken by runtime: OMTP is not supported when using cairo
信息里关键词有:DIRECT2D,WEBRENDER,OMTP:
-
DIRECT2D:微软开发的2d图像API,firefox用它来实现硬件加速
-
WEBRENDER:WebRender:让网页渲染如丝顺滑 - 前端进阶者 - SegmentFault 思否(当前N卡独占)。
-
OMTP: Off-Main-Thread Painting – Mozilla Gfx Team Blog ,按照含义应该是叫 脱离主线程绘画。简单地说就是将主线程的绘图命令打包,批量发送给绘画线程进行绘制。
所以在经过上面对 gfx.content.azure.backends 的修改后,浏览器优先使用了cairo去进行绘制,但是cairo恰好又不支持OMTP,而且硬件加速也被我们关闭了,浏览器的渲染速度自然慢下来了
似乎 良好的字体渲染效果 和 浏览器的渲染速度 必须取舍一个。其实,firefox自带字体渲染的配置,通过调整完全可以做到与mactype媲美的字体渲染。(我全都要...)
首先是恢复 gfx.content.azure.backends 和 gfx.direct2d.disabled 的默认设置,让浏览器使用硬件加速和OMTP。
其次,停掉Mactype对firefox的渲染。
最后是调整firefox的自带字体渲染参数(摘自贴吧)
gfx.font_rendering.cleartype_params.cleartype_level ;100
[cleartype 级别,0 到 100 ,100 最大]
gfx.font_rendering.cleartype_params.enhanced_contrast; 200
[对比度增强,0 到100, 100最大 ]
gfx.font_rendering.cleartype_params.gamma ;2200
[gamma 值 1.0 到 2.2,这里它是按照 cleartype 的注册表值来指派的,1000-2200/1000 对应 1.0 和 2.2]
gfx.font_rendering.cleartype_params.pixel_structure; 1
[渲染像素结构,0 = flat, 1 = RGB, 2 = BGR 液晶就用RGB]
gfx.font_rendering.cleartype_params.rendering_mode; 5
[渲染模式,0 = default, 1 = aliased, 2 = GDI Classic, 3 = GDI Natural,4 = Natural, 5 = Natural Symmetric ;5 效果最好]
附 未调整的firefox、Mactype渲染的firefox、调整后的firefox 对比:
未调整:
Mactype:
调整后:
如果你恰好在使用Mactype+Firefox,那么你可能并没有体验到新版本Firefox带来的速度提升,建议你关掉Mactype,按照上面的方法打开硬件加速,调整字体配置,重新打开Firefox,感受前后的渲染速度变化。