OS X에서 Safari에만 완벽한 관성 스크롤이있는 이유는 무엇입니까? 스크롤됩니다. 여러 확장을 설치해도

Safari는 OS X에서 완벽한 관성 스크롤을 얻을 수있는 유일한 브라우저라는 사실에 놀랐습니다.

  • 웹 사이트에 많은 플래시 컨텐츠가 있어도 Safari의 스크롤은 매끄 럽습니다.
  • 로드 할 컨텐츠가 많은 웹 사이트가 있으며 컨텐츠를로드하고 렌더링하는 동안 Safari는 계속 부드럽게 스크롤됩니다.
  • 여러 확장을 설치해도 스크롤 성능에는 영향을 미치지 않습니다.

OS X에서 Safari 브라우저의 주요 경쟁자는 Chrome 및 Firefox입니다. 둘 다 Safari에서 사용하는 것과 동일한 부드러운 스크롤을 제공하지 못합니다.

  • Chrome의 모든 페이지 에서 GPU 합성 과 같은 플래그 사용 ( chrome://flags) 또는 …
  • Firefox의 부드러운 스크롤 ( Options > Advanced)은 Safari가 기본적으로 제공하는 스크롤 성능을 제공하지 않습니다.

질문

Safari는 비공개 API를 사용하여 Chrome / Firefox 개발자가 액세스 할 수없는 부드러운 스크롤을 제공합니까? Safari의 스크롤링은 훨씬 나아지고 경쟁 업체는 중단되지 않은 스크롤을 제공하지 않습니다.

Chrome은 일반적으로 새로운 OS X 기능에 정말 빨리 적응하기 때문에 특히 궁금합니다.



답변

차이점은 각 브라우저의 아키텍처 및 프로세스 간 통신 선택과 관련이 있습니다.

최신 웹 브라우저는 별도의 프로세스로 페이지를 렌더링합니다. Apple은 IOSurface라는 프레임 워크를 가지고있어 한 프로세스가 이미지를 다른 프로세스로 능률적으로 전달할 수 있습니다. 이 프레임 워크는 최신 QuickTime 반복을 위해 Mac OS X 10.6 (Snow Leopard)에서 도입되었습니다.

QuickTime은 IOSurface를 사용하여 별도의 프로세스로 동영상 디코딩을 오프로드합니다. 디코딩 할 필요가없는 QuickTime Player 응용 프로그램은 사용자 인터페이스만을 처리하고 디코딩 프로세스에서 제공하는 이미지를 보여줍니다.

Safari가 QuickTime에서 배웠으며 동일한 기술을 사용하고 있다고 생각합니다. 웹 페이지는 다른 프로세스로 오프로드되고 렌더링되어 다시 전달됩니다.

크롬과 파이어 폭스가 똑같은 일을 할 수 있을까요? 문제는 사용자를 처리하는 스레드가 빠르게 응답하고 렌더링이 업데이트 될 때까지 기다리지 않는 것입니다.

Chrome은 별도의 프로세스를 사용하며 Mac에서 IOSurface를 사용하는 것으로 보입니다. 이 버그는 Chrome의 IOSurface 사용 개선에 대해 설명 합니다.

IOSurface는 모든 Mac OS X 10.6 이상 응용 프로그램에서 사용할 수있는 공개 프레임 워크입니다. 그러나 문서가 거의 없으며 Mac 전용입니다.

이것은 모두 추측입니다.