중국의 모바일 네트워크 환경은 복잡합니다. 사용자에게 더 나은 액세스 경험을 제공하기 위해 개발자는 사용자의 현재 네트워킹 방식을 이해한 다음 현재 네트워크 환경에 맞는 요청 결과를 사용자에게 제공하기를 바랍니다.
W3C 사양은 2012년 11월 29일 작업 초안 프로토콜 사양에 따라 현재 네트워크 상태 navigator.connection을 가져오는 방법을 제공하며 인터페이스 값에서 대역폭(대역폭, M/s) 및 측정 매개변수를 가져올 수 있습니다. ; 접속 환경의 변화를 상시 모니터링할 수 있는 모니터링 방법도 제공합니다. 실제로 우리는 많은 브라우저가 대역폭 값을 반환하지 않고 2011년 6월 7일 작업 초안 프로토콜을 준수하고 유형(유형, wifi/2g/3g/4g)을 반환한다는 것을 발견했습니다.
각 기업의 지원 내용을 살펴보겠습니다
Android 2.3 Browser | UC | Dolphin | QQ浏览器 | Baidu | Firefox | Chrome | Opera Mini | Maxthon |
Yes | No* | Yes | Yes* | Yes | Yes(New) | No | No | Yes |
iPhone의 어떤 브라우저에서도 관련 정보를 얻을 수 없습니다.
위의 설명을 통해 우리는 이 매개변수를 통해 여전히 많은 사용자의 인터넷 연결 상태를 파악하고 더 나은 경험을 제공할 수 있음을 발견했습니다.
다음으로 각 브라우저의 반환 상태에 중점을 둡니다.
대부분의 브라우저는 int 유형을 반환합니다. 특별한 경우는 유형 이름을 반환하는 QQ 브라우저입니다.
返回值 | QQ返回值 | 类型 |
0 | unknown | UNKNOWN |
1 | ethernet | ETHERNET |
2 | wifi | WIFI |
3 | 2g | CELL_2G |
4 | 3g | CELL_3G |
5 | 4g | CELL_4G(中国现在也会出现这个值,是hspa ) |
? | none | NONE |
다음은 더 큰 특수한 경우입니다. 이것은 Firefox이며 새 버전의 사양을 사용하므로 대역폭을 반환하지만 매우 이상한 점은 Wi-Fi 또는 3G인 한 20을 반환한다는 것입니다. 2G인 경우 0.1953125 를 반환합니다. 현재 네트워크 상태에 관계없이 매번 동일합니다. 이 문제는 계속해서 후속 조치를 취할 예정입니다.
데모 주소 제공: http://demo.jb51.net/js/2015/net.html
데모에서는 연결을 지원하지 않는 브라우저에 {type:0}이 직접 반환되어 일부 브라우저에서 지원하지 않는 문제를 편리하게 해결했으며, 연결을 지원하지 않고 인터넷에 액세스할 수 있는 브라우저를 처리하는 것도 적절합니다. "알 수 없음"으로.
많은 엔지니어들이 이 기능에 대한 지원이 충분하지 않다고 생각하며 아직 사용하지 않는 것이 좋습니다. 그러나 오류를 처리하고 위험을 제어할 수 있는 한 더 친숙한 경험을 제공하는 것은 어떨까요? 본질적으로 좋은 고객에게.
오늘 내 반 친구는 백엔드가 속도를 판단하도록 하는 것에 대해 이야기했습니다. 이것은 다소 어려울 수 있지만 실제로 각 비동기 요청을 통해 사용자의 대략적인 속도를 얻는 것이 가능합니다(로딩 시간과 파일 크기는 실제로 다를 수 있습니다). 프론트엔드에서 획득)을 선택한 후 특정 서비스를 성별 중심으로 제공을 선택하고, 앞으로는 이 방향에 대해 더 생각해 볼 계획입니다.