Neden sadece Safari'de (neredeyse) OS X'te mükemmel atalet kaydırma var?


18

Safari'nin OS X'te (neredeyse) mükemmel ataletsel kaydırma elde etmeyi başaran tek tarayıcı olması beni oldukça şaşırttı.

  • Bir web sitesinde çok sayıda flash içeriğiyle bile, Safari'nin kaydırması pürüzsüzdür.
  • Yüklenecek çok fazla içeriğe sahip web siteleri var ve Safari, içerik yüklenirken ve oluşturulurken düzgün bir şekilde kaydırılmaya devam edecek.
  • Birkaç uzantının yüklenmesinin kaydırma performansı üzerinde bir etkisi yoktur.

OS X'teki Safari tarayıcısının en büyük rakipleri Chrome ve Firefox'tur. Her ikisi de Safari'de olduğu gibi aynı yumuşak kaydırmayı sağlamayı başaramaz:

  • Google Chrome'daki tüm sayfalarda GPU birleştirme gibi bayraklar etkinleştiriliyor ( chrome://flags) veya ...
  • Firefox'ta ( Options > Advanced) düzgün kaydırma , Safari'nin varsayılan olarak sağladığı kaydırma performansını sağlamaz.

Soru

Safari, Chrome / Firefox geliştiricilerinin erişemediği düzgün kaydırma sağlamak için özel API kullanıyor mu? Safari'nin kaydırması çok daha iyi ve rakipler kırılmamış kaydırma sunmayı başaramıyor.

Özellikle Chrome'u merak ediyorum çünkü genellikle yeni OS X özelliklerine gerçekten hızlı uyum sağlıyor.


1
Katılmıyorum. Firefox'un kaydırması Safari'ninkinden çok daha üstündür (2011 ortalarında Macbook Air'de 10.7.4'deyim): Safari her zaman pürüzsüz. Geriye veya ileriye doğru iki parmağınızı kaydırdığınızda güzel yakınlaştırma ve "kapak" efekti nedeniyle Safari'yi kullanmaya devam etme eğilimindeyim.
Steven Lu

2
Kahretsin. İşaret ettiğinden beri Firefox'un şimdi çok daha fazla yırtılmadığını fark ediyorum. Her yerde yapar. Metin (bu sitedeki gibi) ardışık kareler arasında tutarsız bir şekilde hareket ettikçe titrer ve titreyir.
Steven Lu

2
Her neyse, Safari on Lion, Apple'ın dokunmatik giriş cihazlarıyla (touchpad / magic mouse) bir araya geldiğinde, muhtemelen her yerde mevcut olan en kullanıcı dostu ve en güzel görüntü oluşturma web deneyimidir. Doğru vsync uygular ve hiçbir animasyon gözyaşı yok ve sıkı sıkıştırma-zoom ve sola-geriye-kaydırma özelliklerinden yeterince alamıyorum. Bazen kaydırma biraz hıçkırıyor, ancak bence bu sorunlara neyin sebep olduğunu profil haline getirmek için dahili araçlara erişmemiz gerekecek. Apple'da bir iş bulursam bunun üzerinde çalışmak isterdim.
Steven Lu

1
Vay be, bir sürü yorum. Spekülasyon, cevap değil başka bir şey daha ekliyorum ... Safari'nin Windows'ta kullanılabilir olduğu gerçeğini göz ardı ederek (Neden herkes yapmıyor ..), sanırım Safari'nin Mac için yazılması basit bir mesele, ve geri kalan tarayıcılar, bir dereceye kadar, kod tabanını birden fazla platformla paylaşarak, her birinde mükemmel olmasını zorlaştırıyor.
stuffe

1
O Safari hayal etmek zor olmaz özel API'ler kullanın: Böyle API'ler Apple'ın yazılım özellikleri sağlamak için daha başka bir nedeni için vardır. Ama bu sadece bir varsayım ve bu soruya gerçekten cevap vermenin başka bir yolunu görmüyorum ...
Dan J

Yanıtlar:


6

Fark muhtemelen her tarayıcının mimarisi ve süreçler arası iletişim seçenekleri ile ilgilidir.

Modern web tarayıcıları sayfaları ayrı işlemlerde işler. Apple, bir işlemin bir görüntüyü başka bir işleme geçirmesi için kolaylaştırılmış bir yol sağlayan IOSurface adlı bir çerçeveye sahiptir . Bu çerçeve, Mac OS X 10.6, yani Snow Leopard'da, QuickTime'ın en son yinelemesi için tanıtıldı.

QuickTime, ayrı kodlara film kod çözme işlemini boşaltmak için IOSurface kullanır. Hiçbir kod çözme yapılmadan, QuickTime Player uygulaması yalnızca kullanıcı arabirimi ile ilgilenmeye ve kod çözme işlemlerinin sağladığı görüntüleri göstermeye bırakılır.

Safari'nin QuickTime'dan öğrendiğinden ve aynı teknikleri kullandığından şüpheleniyorum. Web sayfaları diğer işlemlere aktarılır, oluşturulur ve geri aktarılır.

Chrome ve Firefox kesinlikle aynı şeyi yapabilir mi? Buradaki zorluk, kullanıcıyla ilgili iş parçacığının hızlı bir şekilde yanıt vermesini ve oluşturmanın güncellenmesini beklerken gecikmemesini sağlamaktır.

Chrome ayrı işlemler kullanıyor ve Mac'te IOSurface kullanıyor gibi görünüyor; bu hata Chrome'un IOSurface kullanımını iyileştirmekten bahsediyor .

IOSurface, herhangi bir Mac OS X 10.6+ uygulaması tarafından kullanılabilen herkese açık bir çerçevedir. Ancak çok az dokümantasyon var ve Mac'e özel.

Tüm bunlar varsayım.


Chrome, içeriği oluşturmak için ayrı işlemler kullanır.
Nathan Greenstein

1
Cevabınız için teşekkür ederim! Bu soruya şu ana kadar çok az rezonans olması üzücü. Ama eğer birincil kaynaklara atıfta bulunamazsam bunu anlayabilirim.
gentmatt

@gentmatt WebKit kullanan tarayıcılarda kaydırma deneyimini nasıl buluyorsunuz? Bu, tarayıcının oluşturma motorunun etkisini çevredeki tarayıcı arayüzü uygulamasından ayırmaya yardımcı olabilir. OmniWeb'in WebKit kullandığına inanıyorum.
Graham Miln

@GrahamMiln Chrome da Webkit kullanıyor. Ancak Chrome'un kaydırma özelliği mükemmel IMO'dan oldukça uzak. Bu gerçekten web sitesinin içeriğine bağlıdır. Genel olarak performans o kadar iyi değil.
gentmatt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.