Perché solo Safari ha (quasi) perfetto scorrimento inerziale in OS X?

18

Sono abbastanza sorpreso che Safari sia l'unico browser in OS X che riesca a ottenere (quasi) uno scorrimento inerziale perfetto.

  • Anche con molti contenuti flash su un sito Web, lo scorrimento di Safari è scorrevole.
  • Ci sono siti web con un sacco di contenuti da caricare e Safari continuerà a scorrere senza intoppi mentre il contenuto viene caricato e sottoposto a rendering.
  • L'installazione di più estensioni non ha effetto sul rendimento dello scorrimento.

I principali concorrenti del browser Safari su OS X sono Chrome e Firefox. Entrambe non riescono a fornire lo stesso scorrimento uniforme come in Safari:

  • Abilitazione di flag come Compilazione GPU su tutte le pagine in Google Chrome ( chrome://flags ) o ...
  • scorrimento fluido in Firefox ( Options > Advanced ) non forniscono le prestazioni di scorrimento che Safari fornisce per impostazione predefinita.

Domanda

Safari utilizza API private per offrire uno scorrimento fluido a cui gli sviluppatori di Chrome / Firefox non possono accedere? Come mai lo scrolling di Safari è molto migliore e i concorrenti non riescono a fornire lo scrolling non interrotto.

Mi chiedo in particolare su Chrome perché di solito si adatta alle nuove funzionalità di OS X in modo molto rapido.

    
posta gentmatt 01.07.2012 - 12:11
fonte

1 risposta

6

È probabile che la differenza abbia a che fare con le scelte di comunicazione di architettura e interprocesso di ciascun browser.

I browser Web moderni eseguono il rendering di pagine in processi separati. Apple ha un framework chiamato IOSurface che offre un modo semplificato per un processo per passare un'immagine a un altro processo. Questo framework è stato introdotto in Mac OS X 10.6, noto anche come Snow Leopard, per l'ultima iterazione di QuickTime.

QuickTime utilizza IOSurface per scaricare la decodifica dei filmati per separare i processi. Senza alcuna decodifica da fare, l'applicazione QuickTime Player viene lasciata esclusivamente con l'interfaccia utente e mostrando le immagini fornite dai processi di decodifica.

Sospetto che Safari abbia imparato da QuickTime e stia utilizzando le stesse tecniche. Le pagine Web vengono scaricate in altri processi, sottoposti a rendering e passati di nuovo.

Chrome e Firefox potrebbero fare la stessa cosa, assolutamente. La sfida è garantire che il thread che si occupa con l'utente risponda rapidamente e non sia ritardato in attesa dell'aggiornamento del rendering.

Chrome utilizza processi separati e sembra utilizzare IOSurface su Mac; questo bug parla di miglioramento dell'uso di IOSurface da parte di Chrome .

IOSurface è una struttura pubblica disponibile per qualsiasi applicazione Mac OS X 10.6+. Tuttavia c'è poca documentazione ed è specifico per Mac.

Questa è una congettura.

    
risposta data 19.07.2012 - 16:54
fonte

Leggi altre domande sui tag