¿Por qué solo Safari tiene un desplazamiento inercial (casi) perfecto en OS X?

18

Estoy bastante sorprendido de que Safari sea el único navegador en OS X que logre obtener un desplazamiento inercial (casi) perfecto.

  • Incluso con una gran cantidad de contenido flash en un sitio web, el desplazamiento de Safari es fluido.
  • Hay sitios web con mucho contenido para cargar y Safari continuará desplazándose sin problemas mientras se carga y se procesa el contenido.
  • La instalación de varias extensiones no tiene efecto en el rendimiento del desplazamiento.

Los principales competidores del navegador Safari en OS X son Chrome y Firefox. Ambos no logran ofrecer el mismo desplazamiento suave como el que está acostumbrado en Safari:

  • Habilitando marcas como la composición de GPU en todas las páginas en Google Chrome ( chrome://flags) o ...
  • El desplazamiento suave en Firefox ( Options > Advanced) no ofrece el rendimiento de desplazamiento que Safari ofrece por defecto.

Pregunta

¿Safari utiliza una API privada para ofrecer un desplazamiento suave al que los desarrolladores de Chrome / Firefox no pueden acceder? ¿Cómo es que el desplazamiento de Safari es mucho mejor y los competidores no logran ofrecer un desplazamiento sin interrupciones?

Me pregunto especialmente sobre Chrome porque generalmente se adapta a las nuevas funciones de OS X realmente rápido.

Gentmatt
fuente
1
Estoy en desacuerdo. El desplazamiento de Firefox es muy superior al de Safari (estoy en 10.7.4 en una Macbook Air de mediados de 2011): casi siempre es suave a 60Hz, mientras que Safari siempre se "engancha" un poco. Aunque todavía tiendo a usar Safari debido al agradable efecto de zoom y "cobertura" cuando deslizo dos dedos hacia los lados para retroceder o avanzar.
Steven Lu
2
Maldición Desde que lo señaló, noto que Firefox se desgarra mucho más ahora. Lo hace por todo el lugar. El texto (como en este sitio) parpadea y se estremece a medida que se mueven de manera inconsistente a través de cuadros consecutivos.
Steven Lu
2
En cualquier caso, Safari on Lion, combinado con los dispositivos de entrada táctil de Apple (panel táctil / mouse mágico) probablemente sea la experiencia web de representación más agradable y fácil de usar disponible en cualquier lugar. Aplica correctamente vsync y, por lo tanto, no se rompen las animaciones, y no puedo tener suficiente de las características de pellizco de zoom y desplazamiento de izquierda a atrás para retroceder. A veces, el hipo se desplaza ligeramente, pero creo que necesitaríamos acceso a herramientas internas para poder perfilar qué está causando esos problemas. Si alguna vez consigo un trabajo en Apple, me gustaría trabajar en esto.
Steven Lu
1
Wow, muchos comentarios. Estoy agregando otro, ya que es especulación, no una respuesta ... Ignorando el hecho de que Safari está disponible en Windows (por qué no, todos los demás lo hacen ...), creo que es una simple cuestión de que Safari esté escrito para Mac, y el resto de los navegadores necesariamente comparten, en cierta medida, la base de código con múltiples plataformas, lo que dificulta que sea perfecto en cada una.
stuffe
1
Es difícil imaginar que Safari no usaría API privadas: tales API existen por ninguna otra razón que no sea proporcionar funciones al software de Apple. Pero eso es solo una conjetura, y no veo otra forma de responder esta pregunta ...
Dan J

Respuestas:

6

Es probable que la diferencia tenga que ver con la arquitectura y las opciones de comunicación entre procesos de cada navegador.

Los navegadores web modernos procesan las páginas en procesos separados. Apple tiene un marco llamado IOSurface que proporciona una forma simplificada para que un proceso pase una imagen a otro proceso. Este marco se introdujo en Mac OS X 10.6, también conocido como Snow Leopard, para la última versión de QuickTime.

QuickTime utiliza IOSurface para descargar la decodificación de películas para separar los procesos. Sin necesidad de decodificar, la aplicación QuickTime Player se ocupa únicamente de la interfaz de usuario y muestra las imágenes proporcionadas por los procesos de decodificación.

Sospecho que Safari aprendió de QuickTime y está usando las mismas técnicas. Las páginas web se descargan a otros procesos, se procesan y se devuelven.

¿Podrían Chrome y Firefox hacer lo mismo, absolutamente? El desafío es garantizar que el hilo que trata con el usuario responda rápidamente y no se demore esperando que se actualice el renderizado.

Chrome usa procesos separados y parece usar IOSurface en la Mac; Este error habla de mejorar el uso de Chrome de IOSurface .

IOSurface es un marco público disponible para cualquier aplicación Mac OS X 10.6+. Sin embargo, hay poca documentación y es específica de Mac.

Esto es todo conjetura.

Graham Miln
fuente
Chrome utiliza procesos separados para representar el contenido, fwiw.
Nathan Greenstein
1
¡Gracias por su respuesta! Es triste que haya tan poca resonancia en esta pregunta hasta ahora. Pero puedo entender esto si uno no puede referirse a fuentes primarias.
gentmatt
@gentmatt, ¿cómo encuentra la experiencia de desplazamiento en los navegadores que usan WebKit? Esto puede ayudar a separar el impacto del motor de representación del navegador de la implementación de la interfaz del navegador circundante. Creo que OmniWeb usa WebKit.
Graham Miln
@GrahamMiln Chrome también usa Webkit. Pero el desplazamiento de Chrome está lejos de ser perfecto, en mi opinión. Realmente depende del contenido del sitio web. En general, el rendimiento no es tan bueno.
gentmatt