Чому тільки в Safari іде (майже) ідеальна інерціальна прокрутка в OS X?


18

Я дуже вражений, що Safari - єдиний браузер в OS X, якому вдається отримати (майже) ідеальне інерційне прокручування.

  • Навіть з великою кількістю флеш-вмісту на веб-сайті, прокрутка Safari проходить гладко.
  • Є веб-сайти з великим вмістом для завантаження, і Safari буде продовжувати плавно прокручувати, поки вміст завантажується і відображається.
  • Встановлення декількох розширень не впливає на продуктивність прокрутки.

Основними конкурентами браузера Safari в OS X є Chrome і Firefox. Обидва не вдається надати таку плавну прокрутку, як звична в Safari:

  • Увімкнення прапорів, таких як компонування графічного процесора, на всіх сторінках Google Chrome ( chrome://flags) або ...
  • плавне прокручування у Firefox ( Options > Advanced) не забезпечує продуктивність прокрутки, яку Safari забезпечує за замовчуванням.

Питання

Чи Safari використовує приватний API для плавного прокручування, до якого розробники Chrome / Firefox не можуть отримати доступ? Чому так прокручування Safari набагато краще, і конкурентам не вдається надати нерозбиту прокрутку.

Мені цікаво особливо щодо Chrome, оскільки він зазвичай дуже швидко адаптується до нових функцій OS X.


1
Я не погоджуюсь. Прокрутка Firefox набагато перевершує програму Safari (я 10.7.4 в середині 2011 року Macbook Air): майже завжди плавна 60 Гц, тоді як Safari завжди трохи «задирається». Я, як правило, все ще використовую Safari, хоча через приємний масштабування та ефект «прикриття», коли двома пальцями проведіть убік, щоб повернутись назад або вперед.
Стівен Лу

2
Чорт. З тих пір, як ви це вказали, зараз помічаю, що Firefox рве набагато більше. Це робиться всюди. Текст (як на цьому веб-сайті) мерехтить і здригається, коли вони непослідовно рухаються через послідовні кадри.
Стівен Лу

2
У будь-якому випадку, Safari on Lion у поєднанні з пристроями сенсорного введення Apple (тачпад / чарівна миша), мабуть, найзручніший та найприємніший веб-досвід надання, доступний у будь-якому місці. Він правильно застосовує vsync, і тому ніяка анімація не розривається, і я не можу отримати достатньо жорстких функцій збільшення та прокрутки ліворуч назад. Іноді трохи прокручує гикавку, але я думаю, що нам знадобиться доступ до внутрішніх інструментів, щоб мати змогу проаналізувати, що викликає ці проблеми. Якби я коли-небудь влаштувався на роботу в Apple, я хотів би попрацювати над цим.
Стівен Лу

1
Нічого, завантаження коментарів. Я додаю ще одну, оскільки це спекуляція, а не відповідь ... Ігноруючи той факт, що Safari доступний у Windows (Чому ні, всі інші це роблять ..), я вважаю, що Safari є простим питанням написання для Mac, а решта веб-переглядачів обов'язково діляться, певною мірою, кодовою базою з декількома платформами, що ускладнює їх ідеальне використання на кожній.
stuff

1
Важко уявити, що Safari не використовував би приватні API: такі API існують не з іншої причини, ніж для надання функцій програмному забезпеченню Apple. Але це лише здогадки, і я не бачу іншого способу насправді відповісти на це питання ...
Dan J

Відповіді:


6

Різниця, ймовірно, пов'язана з вибором архітектури та міжпроцесорних комунікацій кожного браузера.

Сучасні веб-браузери відображають сторінки в окремих процесах. Apple має рамку під назвою IOSurface, яка забезпечує спрощений спосіб передачі зображення в інший процес. Ця структура була введена в Mac OS X 10.6, також Snow Leopard, для останньої ітерації QuickTime.

QuickTime використовує IOSurface для завантаження декодування фільмів для окремих процесів. Без декодування, програма QuickTime Player не має стосунку виключно до користувальницького інтерфейсу та показу зображень, наданих процесами декодування.

Я підозрюю, що Safari навчився у QuickTime і використовує ті самі методи. Веб-сторінки завантажуються в інші процеси, надаються та передаються назад.

Чи могли Chrome і Firefox зробити те ж саме, абсолютно абсолютно. Завдання полягає в тому, щоб забезпечити швидку реакцію потоку з користувачем та не затримувати очікування оновлення.

Chrome використовує окремі процеси і, здається, використовує IOSurface на Mac; ця помилка говорить про покращення використання Chrome в IOSurface .

IOSurface - це загальнодоступна основа, доступна для будь-якого додатка Mac OS X 10.6+. Однак документації мало, і це специфічно для Mac.

Це все здогади.


Chrome використовує окремі процеси для візуалізації вмісту, fwiw.
Натан Грінштейн

1
Спасибі за вашу відповідь! Сумно, що поки що так мало резонансу в цьому питанні. Але я можу це зрозуміти, якщо не можна посилатися на першоджерела.
gentmatt

@gentmatt Як ви знаходите досвід прокрутки у веб-переглядачах, які використовують WebKit? Це може допомогти відокремити вплив механізму візуалізації браузера від навколишнього інтерфейсу браузера. Я вважаю, що OmniWeb використовує WebKit.
Грем Мілн

@GrahamMiln Chrome також використовує Webkit. Але прокрутка Chrome є далеко не ідеальною, IMO. Це дійсно залежить від вмісту веб-сайту. Взагалі, вистава не настільки вдала.
gentmatt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.