스크립트 평가 및 장기 작업

스크립트를 로드할 때 브라우저가 실행하기 전에 스크립트를 평가하는 데 시간이 걸리므로 작업이 길어질 수 있습니다. 스크립트 평가의 작동 방식과 페이지 로드 중에 긴 작업이 발생하지 않도록 하기 위해 취할 수 있는 조치를 알아보세요.

다음 페인트에 대한 상호작용 (INP)을 최적화하는 방법에 관한 대부분의 조언은 상호작용 자체를 최적화하라는 것입니다. 예를 들어 긴 작업 최적화 가이드에서는 setTimeout로 생성하는 등의 기법이 설명됩니다. 이러한 기법은 긴 작업을 피하여 기본 스레드에 여유를 제공하므로 유용합니다. 이렇게 하면 하나의 긴 작업을 기다려야 하는 대신 상호작용 및 기타 활동을 더 일찍 실행할 수 있는 기회가 더 많아집니다.

하지만 스크립트 자체를 로드할 때 발생하는 긴 작업은 어떨까요? 이러한 작업은 사용자 상호작용을 방해하고 로드 중에 페이지의 INP에 영향을 줄 수 있습니다. 이 가이드에서는 브라우저가 스크립트 평가로 시작된 작업을 처리하는 방법을 살펴보고 페이지가 로드되는 동안 기본 스레드가 사용자 입력에 더 잘 반응할 수 있도록 스크립트 평가 작업을 분할하기 위해 취할 수 있는 조치를 살펴봅니다.

스크립트 평가란 무엇인가요?

JavaScript를 많이 제공하는 애플리케이션을 프로파일링한 경우 원인에 스크립트 평가 라벨이 지정된 긴 작업이 표시되었을 수 있습니다.

Chrome DevTools의 성능 프로파일러에 시각화된 스크립트 평가 작업 이 작업으로 인해 시작 중에 긴 작업이 발생하여 기본 스레드가 사용자 상호작용에 응답하는 기능이 차단됩니다.
Chrome DevTools의 성능 프로파일러에 표시된 스크립트 평가 작업 이 경우 작업은 사용자 상호작용을 유도하는 작업을 포함하여 기본 스레드가 다른 작업을 수행하지 못하도록 차단하는 긴 작업을 일으키기에 충분합니다.

JavaScript는 실행 직전에 컴파일되므로 스크립트 평가는 브라우저에서 JavaScript를 실행하는 데 필요한 부분입니다. 스크립트가 평가되면 먼저 오류를 파싱합니다. 파서에서 오류를 찾지 못하면 스크립트가 바이트 코드로 컴파일된 후 실행을 계속할 수 있습니다.

스크립트 평가는 필요하지만, 사용자가 페이지가 처음 렌더링된 직후에 페이지와 상호작용하려고 할 수 있으므로 문제가 될 수 있습니다. 하지만 페이지가 렌더링되었다고 해서 페이지 로드가 완료된 것은 아닙니다. 페이지에서 스크립트를 평가하는 데 시간이 걸리므로 로드 중에 발생하는 상호작용이 지연될 수 있습니다. 상호작용을 담당하는 스크립트가 아직 로드되지 않았을 수 있으므로 이 시점에서 상호작용이 발생할 수 있다는 보장은 없지만 JavaScript에 종속된 상호작용이 준비되었거나 상호작용이 JavaScript에 전혀 종속되지 않을 수 있습니다.

스크립트와 이를 평가하는 태스크 간의 관계

스크립트 평가를 담당하는 태스크가 시작되는 방식은 로드하는 스크립트가 일반적인