네트워크 품질에 따른 적응형 게재

밀리카 미하즐리야
밀리카 미하즐리야

웹사이트 로드는 네트워크 상태에 따라 매우 다를 수 있습니다. 빠른 네트워크를 사용하면 일반적으로 모든 것이 원활하지만 이동 중에 데이터 요금제 제한이 있고 연결이 불안정하거나 느린 커피숍 Wi-Fi에 연결된 노트북에서 멈춘 경우에는 상황이 달라집니다.

이 문제를 처리하는 한 가지 방법은 연결 품질에 따라 사용자에게 제공할 애셋을 조정하는 것입니다. 이제 웹 애플리케이션이 사용자의 네트워크 정보에 액세스할 수 있도록 하는 Network Information API를 사용하면 가능합니다.

브라우저 지원

  • 61
  • 79
  • x
  • x

소스

사용

이 네트워크 정보를 사용하여 사용자 환경을 개선할 수 있는 방법은 다양합니다.

  • 사용자의 네트워크를 기반으로 고화질 또는 저해상도 콘텐츠 제공 간에 전환합니다.
  • 리소스를 미리 로드할지 결정합니다.
  • 사용자의 인터넷 연결이 느릴 때 업로드 및 다운로드를 연기합니다.
  • 네트워크 품질이 앱을 로드하고 기능을 사용하기에 좋지 않은 경우 오프라인 모드를 사용 설정합니다.
  • 모바일 데이터를 통해 동영상 시청 등의 작업을 하면 비용이 발생할 수 있음을 사용자에게 경고합니다.
  • 이 측정항목을 분석에 사용하여 사용자의 네트워크 품질에 대한 데이터를 수집합니다.

많은 애플리케이션이 이미 비슷한 작업을 수행하고 있습니다. 예를 들어 YouTube, Netflix 및 대부분의 다른 동영상 (또는 영상 통화) 서비스는 스트리밍 중에 자동으로 해상도를 조정합니다. Gmail이 로드될 때 사용자에게 '기본 HTML 로드 (연결 속도가 느린 경우)' 링크가 표시됩니다.

사용자의 인터넷 연결이 느릴 때 Gmail의 기본 HTML 버전을 로드하는 링크

사용 방법

navigator.connection 객체에는 클라이언트의 연결에 대한 정보가 포함되어 있습니다. 속성은 아래 표에 설명되어 있습니다.

속성 설명
downlink 대역폭 추정치(초당 메가비트)입니다.
effectiveType 유효한 연결 유형으로, 가능한 값이 'slow-2g', '2g', '3g' 또는 '4g'입니다 (4g 이상 적용). 왕복 시간과 다운링크 속도의 조합에 따라 결정됩니다. 예를 들어 높은 지연 시간과 결합된 빠른 다운링크는 지연 시간으로 인해EffectiveType이 더 낮습니다.
onchange 연결 정보가 변경될 때 실행되는 이벤트 핸들러입니다.
rtt 연결의 예상 왕복 지연 시간(밀리초)입니다.
saveData 사용자가 데이터 사용량 절감 모드를 요청했는지 여부를 정의하는 불리언입니다.

브라우저의 콘솔에서 실행하면 다음과 같이 표시됩니다.

navgator.connection 객체의 속성 값이 표시된 Chrome DevTools 콘솔

effectiveType 값은 클라이언트 힌트를 통해서도 사용할 수 있으며 이 값을 사용하여 브라우저의 연결 유형을 서버에 전달할 수 있습니다.

onchange 이벤트 리스너를 사용하면 네트워크 품질 변화에 동적으로 적응할 수 있습니다. 네트워크 상태가 좋지 않아 업로드 또는 다운로드를 연기한 경우 더 나은 네트워크 상태가 감지되면 이벤트 리스너를 사용하여 전송을 다시 시작할 수 있습니다. 네트워크 품질이 변경될 때 사용자에게 알릴 수도 있습니다. 예를 들어 Wi-Fi 신호가 끊겨서 셀룰러 네트워크에 연결되면 실수로 데이터가 전송되거나 요금이 청구되는 일을 방지할 수 있습니다. 💸

다른 이벤트 리스너와 마찬가지로 onchange 이벤트 리스너를 사용합니다.

navigator.connection.addEventListener('change', doSomethingOnChange);

결론

Network Information API의 잠재적 이점은 많은 대역폭이 필요한 느린 네트워크 및 애플리케이션을 사용하는 사용자에게 특히 유용합니다. 무엇보다도 점진적 개선 기법으로 사용할 수 있습니다.