Я очень удивлен, что Safari — единственный браузер в OS X, которому удается добиться (почти) идеальной инерционной прокрутки.
Основными конкурентами браузера Safari в OS X являются Chrome и Firefox. Оба не могут обеспечить такую же плавную прокрутку, как в Safari:
chrome://flags
) или...Options > Advanced
) не обеспечивает производительность прокрутки, которую Safari обеспечивает по умолчанию.Использует ли Safari частный API для обеспечения плавной прокрутки, к которой у разработчиков Chrome/Firefox нет доступа? Почему прокрутка в Safari намного лучше, а конкуренты не могут обеспечить бесперебойную прокрутку?
Меня особенно интересует Chrome, потому что он обычно очень быстро адаптируется к новым функциям OS X.
Разница, вероятно, связана с архитектурой и выбором межпроцессного взаимодействия каждого браузера.
Современные веб-браузеры отображают страницы в отдельных процессах. У Apple есть инфраструктура под названием IOSurface , которая обеспечивает упрощенный способ передачи изображения одним процессом другому процессу. Эта структура была представлена в Mac OS X 10.6, также известной как Snow Leopard, для последней версии QuickTime.
QuickTime использует IOSurface для разгрузки декодирования фильмов на отдельные процессы. Без декодирования приложение QuickTime Player остается иметь дело исключительно с пользовательским интерфейсом и показывать изображения, предоставленные процессами декодирования.
Я подозреваю, что Safari научился у QuickTime и использует те же методы. Веб-страницы передаются другим процессам, отображаются и возвращаются обратно.
Могут ли Chrome и Firefox сделать то же самое, абсолютно. Задача состоит в том, чтобы поток, работающий с пользователем, реагировал быстро и не задерживался в ожидании обновления рендеринга.
Chrome использует отдельные процессы и, похоже, использует IOSurface на Mac; эта ошибка говорит об улучшении использования IOSurface в Chrome .
IOSurface — общедоступная платформа, доступная для любого приложения Mac OS X 10.6+. Однако документации мало, и она специфична для Mac.
Это все домыслы.
Стивен Лу
Джентматт
Стивен Лу
Джентматт
Стивен Лу
Стивен Лу
Джентматт
Стивен Лу
Стивен Лу
Джентматт
Стивен Лу
Кен
вещи
Дэн Дж.
Кельвин