18 votes

Pourquoi seul Safari dispose-t-il d'un défilement inertiel (presque) parfait dans OS X ?

Je suis assez étonné que Safari soit le seul navigateur sous OS X qui réussit à obtenir un défilement inertiel (presque) parfait.

  • Même avec beaucoup de contenu flash sur un site web, le défilement de Safari est fluide.
  • Certains sites Web ont beaucoup de contenu à charger et Safari continue à faire défiler les pages de manière fluide pendant que le contenu est chargé et rendu.
  • L'installation de plusieurs extensions n'a pas d'effet sur les performances du défilement.

Les principaux concurrents du navigateur Safari sur OS X sont Chrome et Firefox. Tous deux ne parviennent pas à offrir un défilement aussi fluide que celui auquel Safari nous a habitués :

  • En activant des drapeaux comme Compositing GPU sur toutes les pages dans Google Chrome ( chrome://flags ) ou ...
  • défilement fluide dans Firefox ( Options > Advanced ) n'offrent pas les performances de défilement que Safari offre par défaut.

Question

Safari utilise-t-il une API privée pour offrir un défilement fluide auquel les développeurs de Chrome/Firefox n'ont pas accès ? Comment se fait-il que le défilement de Safari soit tellement meilleur et que les concurrents ne parviennent pas à offrir un défilement non interrompu ?

Je me pose surtout des questions sur Chrome, car il s'adapte généralement très rapidement aux nouvelles fonctionnalités d'OS X.

6voto

Graham Miln Points 39606

La différence est probablement liée à l'architecture et aux choix de communication interprocessus de chaque navigateur.

Les navigateurs web modernes rendent les pages dans des processus séparés. Apple dispose d'un appelé IOSurface qui fournit un moyen simplifié pour un processus de transmettre une image à un autre processus. Ce cadre a été introduit dans Mac OS X 10.6, alias Snow Leopard, pour la dernière itération de QuickTime.

QuickTime utilise IOSurface pour décharger le décodage des films sur des processus séparés. Sans décodage à effectuer, l'application QuickTime Player ne s'occupe que de l'interface utilisateur et de l'affichage des images fournies par les processus de décodage.

Je soupçonne Safari d'avoir appris de QuickTime et d'utiliser les mêmes techniques. Les pages Web sont transférées à d'autres processus, rendues et renvoyées.

Chrome et Firefox pourraient-ils faire la même chose, absolument. Le défi consiste à faire en sorte que le fil de discussion qui traite avec l'utilisateur réponde rapidement et ne soit pas retardé par l'attente de la mise à jour du rendu.

Chrome utilise effectivement des processus distincts et semble utiliser IOSurface sur le Mac ; ce bogue parle de amélioration de l'utilisation d'IOSurface par Chrome .

IOSurface est un framework public disponible pour toute application Mac OS X 10.6+. Cependant, il y a peu de documentation et il est spécifique à Mac.

Ce ne sont que des conjectures.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X