OS X에서 Safari에만 완벽한 관성 스크롤이있는 이유는 무엇입니까?


18

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 기능에 정말 빨리 적응하기 때문에 특히 궁금합니다.


1
동의하지 않습니다. Firefox의 스크롤은 Safari보다 훨씬 뛰어납니다 (2011 년 중반 Macbook Air에서 10.7.4에 있음). 거의 항상 60Hz이며 Safari는 항상 조금씩 s니다. 두 손가락으로 스 와이프하여 옆이나 뒤로 이동할 때 멋진 확대 / 축소 및 "커버"효과로 인해 Safari를 계속 사용하는 경향이 있습니다.
Steven Lu

2
젠장. 당신이 그것을 지적한 이후로 나는 지금 Firefox가 훨씬 더 많이 찢어지는 것을 주목하고 있습니다. 그것은 모든 곳에서 그것을합니다. 이 사이트와 같은 텍스트는 연속 프레임에서 일관되지 않게 움직일 때 깜박 거립니다.
Steven Lu

2
어쨌든 Lion의 Safari는 Apple의 터치 입력 장치 (터치 패드 / 마법 마우스)와 결합되어 어느 곳에서나 가장 사용자 친화적이고 멋진 렌더링 웹 경험을 제공합니다. vsync를 올바르게 적용하므로 애니메이션이 찢어지지 않으며 좁은 핀치 줌 및 왼쪽에서 뒤로 이동 기능을 충분히 얻을 수 없습니다. 때로는 딸꾹질이 약간 스크롤되지만 이러한 문제를 일으키는 원인을 프로파일 링하려면 내부 도구에 액세스해야한다고 생각합니다. Apple에서 일을한다면이 일을하고 싶습니다.
Steven Lu

1
와우, 많은 의견. 대답이 아닌 추측으로 다른 것을 추가하고 있습니다 ... Safari가 Windows에서 사용 가능하다는 사실을 무시하고 (왜 다른 사람들도 그렇지 않습니다.) 사파리가 Mac 용으로 작성된 간단한 문제라고 생각합니다. 나머지 브라우저는 필연적으로 여러 플랫폼과 코드베이스를 공유하여 각 플랫폼에 완벽하게 맞추기가 어렵습니다.
stuffe

1
Safari 개인 API를 사용 하지 않는다고 상상하기는 어렵습니다 . 이러한 API는 Apple 소프트웨어에 기능을 제공하는 것 외에는 다른 이유가 없습니다. 그러나 그것은 단지 추측 일 뿐이며,이 질문에 실제로 대답 할 다른 방법은 없습니다 ...
Dan J

답변:


6

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

최신 웹 브라우저는 별도의 프로세스로 페이지를 렌더링합니다. 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 전용입니다.

이것은 모두 추측입니다.


Chrome은 별도의 프로세스를 사용하여 콘텐츠를 렌더링합니다.
Nathan Greenstein

1
답변 주셔서 감사합니다! 지금까지이 질문에 대한 공명이 거의 없다는 것은 슬픈 일입니다. 그러나 기본 소스를 참조 할 수 없다면 이것을 이해할 수 있습니다.
gentmatt

@gentmatt WebKit을 사용하는 브라우저에서 스크롤 환경을 어떻게 찾습니까? 이는 브라우저 렌더링 엔진의 영향을 주변 브라우저 인터페이스 구현과 분리하는 데 도움이 될 수 있습니다. OmniWeb은 WebKit을 사용한다고 생각합니다.
Graham Miln

@GrahamMiln Chrome은 웹킷도 사용합니다. 그러나 크롬의 스크롤링은 완벽한 IMO와는 거리가 멀다. 그것은 실제로 웹 사이트의 내용에 달려 있습니다. 일반적으로 성능이 좋지 않습니다.
gentmatt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.