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.
Respuestas:
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.
fuente