为什么只有Safari在OS X中只有(几乎)完美的惯性滚动?


18

我很惊讶Safari是OS X中唯一能够(几乎)实现完美的惯性滚动的浏览器。

  • 即使网站上有大量Flash内容,Safari的滚动也很流畅。
  • 有许多网站要加载的内容,而Safari在加载和呈现内容时将继续平稳滚动。
  • 安装多个扩展名不会影响滚动性能。

OS X上Safari浏览器的主要竞争对手是Chrome和Firefox。两者都无法像Safari中一样提供平滑的滚动效果:

  • 在Google Chrome浏览器的所有页面上启用GPU合成等标记(chrome://flags)或...中的
  • 在Firefox中流畅滚动Options > Advanced)无法提供Safari默认提供的滚动性能。

Safari是否使用私有API来提供Chrome / Firefox开发人员无法访问的平滑滚动?Safari的滚动效果如何好得多,竞争对手也无法提供不间断的滚动。

我特别想知道Chrome,因为它通常可以非常快速地适应OS X的新功能。


1
我不同意。Firefox的滚动远远优于Safari的滚动(我在2011年中期的Macbook Air上为10.7.4):几乎总是60Hz平滑,而Safari总是“有点弯曲”。我倾向于仍然使用Safari,因为当两个手指向侧面滑动以向前或向后滑动时,缩放和“覆盖”效果很好。
史蒂文·卢

2
该死 自从您指出这一点以来,我就注意到Firefox现在撕裂了很多。它到处都在做。文本(如此站点上的文本)在连续的帧中不一致移动时会忽隐忽现。
史蒂文·卢

2
无论如何,Lion上的Safari与Apple的触摸输入设备(触摸板/魔术鼠标)结合在一起,可能是任何地方提供的最用户友好和最精美的呈现Web体验。它正确地应用了vsync,因此没有动画撕裂,而且我收紧了捏缩缩放和向左滚动到向后滚动的功能。有时会略微滚动打h,但我认为我们需要使用内部工具才能分析造成这些问题的原因。如果我曾经在苹果公司工作过,那我想继续做下去。
史蒂文·卢

1
哇,评论很多。我要添加另一个,因为这是推测,不是答案。。。忽略了Safari在Windows上可用的事实(为什么其他人都没有。),我认为这很简单,就是为Mac编写Safari,其他浏览器在一定程度上必须与多个平台共享代码库,从而很难在每个平台上都做到完美。
塞特

1
很难想象Safari 不会使用私有API:此类API的存在无非是为Apple软件提供功能。但这只是推测,我看不出有其他方法可以真正回答这个问题……
Dan J

Answers:


6

差异可能与每个浏览器的体系结构和进程间通信选择有关。

现代网络浏览器在单独的过程中呈现页面。苹果有一个叫做IOSurface框架,为一个进程提供了一种将图像传递给另一个进程的简化方法。该框架是Mac OS X 10.6(又名Snow Leopard)中引入的,用于QuickTime的最新版本。

QuickTime使用IOSurface减轻电影解码的负担,以分离各个进程。无需解码,QuickTime Player应用程序仅处理用户界面并显示解码过程提供的图像。

我怀疑Safari已从QuickTime中学到并正在使用相同的技术。网页被卸载到其他进程,呈现并传递回去。

Chrome和Firefox绝对可以做同样的事情。挑战在于确保与用户打交道的线程快速响应,并且不延迟等待渲染更新。

Chrome浏览器确实使用单独的进程,并且似乎在Mac上使用IOSurface;这个错误是关于改善Chrome对IOSurface的使用

IOSurface是可用于任何Mac OS X 10.6+应用程序的公共框架。但是,几乎没有文档,它是Mac专用的。

这全是猜测。


Chrome浏览器确实使用单独的流程来呈现内容。
内森·格林斯坦

1
谢谢您的回答!令人遗憾的是,到目前为止,对这个问题的回应如此之少。但是,如果不能引用主要资源,我就能理解这一点。
gentmatt 2012年

@gentmatt如何在使用WebKit的浏览器中找到滚动体验?这可以帮助将浏览器呈现引擎的影响与周围的浏览器界面实现分开。我相信OmniWeb使用WebKit。
格雷厄姆·米尔恩

@GrahamMiln Chrome也使用Webkit。但是IMO,Chrome的滚动功能还远远不够完美。这实际上取决于网站的内容。通常,性能不是很好。
gentmatt 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.