Lighthouse 가변성

웹페이지의 실적에 영향을 주는 요인은 다양합니다. Lighthouse 성능 점수는 페이지가 변경되지 않았어도 웹 및 네트워크 기술의 내재된 가변성으로 인해 변경되는 경향이 있습니다.

변동성의 원인

실적 측정의 변동은 영향의 정도가 다른 여러 채널을 통해 발생합니다. 아래는 측정항목 가변성의 몇 가지 일반적인 소스, 이러한 변수가 결과에 미치는 일반적인 영향, 다양한 환경에서 발생할 수 있는 정도를 포함하는 표입니다.

소스 영향 일반적인 최종 사용자 PageSpeed Insights 통제 대상 실험실
페이지 비확정성 높음 가능성 높음 가능성 높음 가능성 높음
로컬 네트워크 가변성 높음 가능성 높음 가능성 낮음 가능성 낮음
등급 1 네트워크 가변성 보통 가능성 가능성 가능성
웹 서버 가변성 낮음 가능성 높음 가능성 높음 가능성 높음
클라이언트 하드웨어 가변성 높음 가능성 높음 가능성 낮음 가능성 낮음
클라이언트 리소스 경합 높음 가능성 높음 가능성 가능성 낮음
브라우저 비결정성 보통 특정 특정 특정

아래에서는 분산의 원인과 변동이 Lighthouse 런타임과 환경의 가장 가능성이 큰 조합에 미치는 영향을 자세히 설명합니다. 적용된 제한 및 시뮬레이션된 제한 접근 방식을 이 세 가지 환경에서 사용할 수 있지만 일반적인 최종 사용자는 시뮬레이션된 제한을 사용합니다.

페이지 비확정성

페이지에는 사용자가 페이지를 경험하는 방식을 변경하는 비확정적 로직(예: 로드된 레이아웃과 애셋을 변경하는 A/B 테스트 또는 캠페인 진행 상황에 따라 다른 광고 경험)이 포함될 수 있습니다. 이는 의도적이고 제거할 수 없는 변동의 원인입니다. 페이지가 성능을 저하시키는 방식으로 변경되면 Lighthouse에서 이 사례를 식별할 수 있습니다. 여기서 유일한 완화 조치는 사이트 소유자가 여러 실행 간에 정확히 동일한 버전의 페이지를 테스트하는 것입니다.

로컬 네트워크 가변성

로컬 네트워크에는 패킷 손실, 가변 트래픽 우선순위 지정, 라스트 마일 네트워크 정체로 인한 가변성이 내재되어 있습니다. 저렴한 라우터를 사용하는 사용자와 제한된 대역폭을 공유하는 기기가 많은 사용자가 일반적으로 이에 가장 취약합니다. 적용됨 제한은 기본 재시도를 마스킹하는 최소 요청 지연 시간과 최대 처리량을 적용하여 이러한 영향을 부분적으로 완화합니다. 시뮬레이션된 제한은 네트워크 활동을 자체적으로 재생하여 이러한 영향을 완화합니다.

등급 1 네트워크 가변성

네트워크 상호 연결은 일반적으로 매우 안정적이고 최소한의 영향을 미치지만, 교차 지역 요청(예: 미국에서 중국 사이트의 성능을 측정하는 경우)은 계층 1 네트워크 홉에서 발생하는 지연 시간이 길어질 수 있습니다. 적용됨 제한은 네트워크 제한을 통해 이러한 효과를 부분적으로 마스킹합니다. 시뮬레이션된 제한은 네트워크 활동을 자체적으로 재생하여 이러한 영향을 완화합니다.

웹 서버 가변성

웹 서버는 로드가 다양하며 항상 동일한 지연으로 응답하지는 않습니다. 공유 호스팅 인프라를 사용하여 트래픽이 적은 사이트는 일반적으로 이 문제에 더 취약합니다. 적용됨 제한은 네트워크 제한에 최소 요청 지연 시간을 적용하여 이러한 효과를 부분적으로 마스킹합니다. 시뮬레이션된 제한이 이 효과에 취약하지만 일반적으로 다른 네트워크 가변성에 비해 전반적인 영향은 낮습니다.

클라이언트 하드웨어 가변성

웹페이지가 로드되는 하드웨어는 성능에 상당한 영향을 미칠 수 있습니다. 적용된 제한으로는 이 문제를 완화할 수 있는 방법이 많지 않습니다. 시뮬레이션된 제한은 시뮬레이션 중에 CPU 작업의 이론적 실행 시간을 제한하여 이 문제를 부분적으로 완화합니다.

클라이언트 리소스 경합

Lighthouse가 실행되는 동안 동일한 머신에서 실행되는 다른 애플리케이션에서는 CPU, 메모리, 네트워크 리소스 경합이 발생할 수 있습니다. 멀웨어, 브라우저 확장 프로그램, 바이러스 백신 소프트웨어는 특히 웹 성능에 큰 영향을 미칩니다. 멀티 테넌트 서버 환경 (예: Travis, AWS 등)에서도 이러한 문제가 발생할 수 있습니다. 일반적으로 이 문제로 인해 여러 Lighthouse 인스턴스를 한 번에 실행하면 결과가 왜곡됩니다. 적용됨 제한은 이 문제에 취약합니다. 시뮬레이션된 제한은 네트워크 활동을 자체적으로 재생하고 CPU 실행에 상한을 설정하여 이 문제를 부분적으로 완화합니다.

브라우저 비결정성

브라우저에는 웹페이지가 로드되는 방식에 영향을 미치는 작업 실행에 내재된 가변성이 있습니다. 하루가 끝날 때 브라우저에서 관찰된 결과를 단순히 보고하기 때문에 적용된 제한으로 인해 이 현상은 불가피합니다. 시뮬레이션된 제한은 자체적으로 실행을 시뮬레이션하여 이 효과를 부분적으로 완화할 수 있으며, 브라우저의 작업 실행 시간만 재사용됩니다.

제한 전략의 영향

아래는 측정항목 변동의 일반적인 원인, 측정항목이 결과에 미치는 일반적인 영향, 다양한 Lighthouse 제한 전략으로 영향을 완화할 수 있는 정도가 포함된 표입니다. 다양한 제한 전략에 대한 자세한 내용은 제한 문서를 참조하세요.

소스 영향 시뮬레이션 제한 적용된 제한 제한 없음
페이지 비확정성 높음 이전 없음 이전 없음 이전 없음
로컬 네트워크 가변성 높음 완화됨 부분적으로 완화됨 이전 없음
등급 1 네트워크 가변성 보통 완화됨 부분적으로 완화됨 이전 없음
웹 서버 가변성 낮음 이전 없음 부분적으로 완화됨 이전 없음
클라이언트 하드웨어 가변성 높음 부분적으로 완화됨 이전 없음 이전 없음
클라이언트 리소스 경합 높음 부분적으로 완화됨 이전 없음 이전 없음
브라우저 비결정성 보통 부분적으로 완화됨 이전 없음 이전 없음

분산 처리 전략

외부 요인 분리

  • 제3자의 영향으로부터 페이지를 최대한 분리하세요. 타인의 가변적인 실패를 탓하는 것은 결코 재미가 없습니다.
  • 테스트 중에 자체 코드의 비결정성을 격리합니다. 애니메이션이 랜덤으로 표시되는 경우 성능 수치도 무작위로 나타날 수 있습니다.
  • 테스트 서버를 최대한 많은 네트워크 변동성으로부터 격리하세요. 안정성이 우려된다면 정확한 네트워크의 localhost 또는 머신을 사용하세요.
  • 클라이언트 환경을 바이러스 백신 소프트웨어 및 브라우저 확장 프로그램과 같은 외부 영향으로부터 격리합니다. 가능하면 테스트용으로 전용 기기를 사용합니다.

컴퓨터에 리소스가 정말로 제한되어 있거나 정제된 환경을 만드는 것이 어려웠다면 PageSpeed Insights 또는 WebPageTest와 같은 호스팅된 실험실 환경을 사용하여 테스트를 실행해 보세요. 지속적 통합 상황에서는 가능하면 전용 서버를 사용하세요. 무료 CI 환경과 '버스트 가능한' 인스턴스는 일반적으로 휘발성이 상당히 크죠

Lighthouse를 여러 번 실행

정신적이든 프로그래매틱 방식이든 실패 기준을 만들 때는 단일 테스트 대신 중앙값, 90번째 백분위수 또는 최솟값과 같은 집계 값을 사용하세요.

Lighthouse 점수 중앙값 5 실행은 1회 실행에 비해 두 배 안정적이며 pwmetrics와 같은 도구가 자동으로 Lighthouse를 실행할 수 있습니다. 최솟값을 사용하면 테스트를 전혀 하지 않는 것보다 크게 개선되며 구현하기 매우 간단합니다. Lighthouse를 최대 5번 실행하면 됩니다.

의견

이 페이지가 도움이 되셨나요?
지원됨
이 페이지에서 어떤 점이 가장 좋았나요?
목표를 달성하는 데 도움이 됨
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
필요한 정보를 갖추고 있었음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
정확한 정보를 제공함
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
읽기 쉬웠음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
기타
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
No
이 페이지에서 가장 나쁜 점은 무엇인가요?
목표를 달성하는 데 도움이 되지 않음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
필요한 정보가 없음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
정보가 부정확했음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
읽기 어려웠음
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.
기타
의견을 주셔서 감사합니다. 이 페이지를 개선하는 방법에 관한 구체적인 아이디어가 있다면 문제를 생성하세요.