1. 소개
개발자들은 다음을 위한 디바이스 클래스 신호가 필요합니다:-
저사양 디바이스에 대해 사이트 또는 특정 컴포넌트의 경량 버전을 서비스. 예시:
-
Google "search lite" (EM에서 사용되는 10KB 검색 결과 페이지) 서비스.
-
Facebook에서 영상 플레이어의 경량 버전 서비스.
-
Google Maps에서 경량 타일 이미지를 서비스.
-
-
메트릭 정규화: 분석용 툴에서 디바이스 클래스에 따라 메트릭을 정규화할 수 있어야 합니다. 예를 들어, 고사양 디바이스에서 100ms 길이의 작업이 발생하면 저사양 디바이스에서의 같은 작업보다 더 심각한 문제임을 의미합니다.
디바이스 메모리는 “디바이스 클래스”를 결정하는 데 매우 유용한 신호입니다. 저메모리 디바이스 (512MB 미만, 512MB~1GB)는 신흥 시장에서 널리 사용됩니다.
1.1. 사용 예시
서버는Sec- CH- Device- Memory HTTP
Client Hint를 받기 위해 Accept- CH 헤더 필드 또는 동등한 HTML meta
요소(http-equiv 속성 사용)를 적용합니다:
Accept-CH: Sec-CH-Device-Memory
위 선호값을 서버로부터 수신하면, 호환되는 사용자 에이전트는 Sec 요청 헤더 필드를 통해 메모리 관련 디바이스
성능을 알립니다:
GET /example HTTP / 1.1 Sec-CH-Device-Memory : 0.5 ...
2.
Sec- CH- Device- Memory (Client Hint) 헤더
필드
Sec 헤더 필드는 HTTP Client Hint 헤더입니다.
구조화된 헤더 값 형식이며, 값은 item이며
decimal로서 클라이언트의 디바이스 메모리(RAM 대략값, GiB 단위)를 나타냅니다.
Sec 헤더 필드의 ABNF(확장 백우스-나우르
형식) 구문은 다음과 같습니다:
Sec-CH-Device-Memory = sf-decimal
2.1. 디바이스 메모리 값 계산하기
값 계산은 실제 디바이스 메모리(MiB 기준)를 가장 가까운 값(가장 큰 비트만 1, 나머지 0: 2의 거듭제곱)으로 반올림한 뒤, 그 수를 1024.0으로 나누어 GiB 단위로 변환해 산출합니다.값 목록에는 상한과 하한을 설정해야 합니다. 상한과 하한 사이의 범위는 대부분의 장치 메모리 값을 포함하되, 드문 장치 메모리 값은 제외하여 디바이스 핑거프린팅을 완화해야 합니다.
참고: 구현체는 상한과 하한을 설정하고, 시간이 지남에 따라 이를 동적으로 조정할 수 있습니다. 이러한 값들은 장치 유형에 따라 다를 수도 있습니다.
만약 Sec 헤더 필드가 메시지에 두 번 이상
나타나면, 마지막 값이 앞선 모든 값을 덮어씁니다.
2.2. 예시
512MiB는 다음과 같이 보고됩니다:
Sec-CH-Device-Memory: 0.5
1000MiB는 다음과 같이 보고됩니다:
Sec-CH-Device-Memory: 1
3. 디바이스 메모리 JS API
[
SecureContext ,
Exposed =(Window ,Worker )
] interface mixin NavigatorDeviceMemory {
readonly attribute double deviceMemory ;
};
Navigator includes NavigatorDeviceMemory ;
WorkerNavigator includes NavigatorDeviceMemory ;
참고: self는 § 2.1 디바이스 메모리 값
계산하기에 설명된 바와 같이 GiB 단위 RAM 용량을 반환합니다.
4. 보안 고려사항
Sec Client Hint 헤더와 JS API는
HTTPS 보안 컨텍스트에서만 사용 가능합니다.
광고된 User-Agent 및 기타 클라이언트 특성 기반으로 하는 디바이스 식별 및 분류(예: 디바이스 타입/클래스)는 최적화된 콘텐츠 제공에 흔히 사용됩니다. 이런 솔루션은 주로 상용 디바이스 DB를 활용하는데, 이는 비용이 크고 통합과 유지가 어렵습니다. 본 명세는 이런 기술적 문제를 해결할 디바이스 메모리 성능 기제(mechanism)를 정의합니다.
핑거프린팅 위험 감소를 위해, 보고 값은 한 개의 가장 큰 비트로 반올림되며, 정확값이 보고되지 않습니다. 또한 값 범위의 상한과 하한이 지정됩니다.
5. IANA 고려사항
본 문서는 Sec HTTP 요청 헤더 필드를
정의하고, 이를 영구 메시지 헤더 필드 레지스트리([RFC3864])에 등록합니다.
5.1. Sec-CH-Device-Memory 헤더 필드
- 헤더 필드명
-
Sec-CH-Device-Memory
- 적용 프로토콜
-
http
- 상태
-
standard
- 작성자/변경 관리자
-
IETF
- 명세 문서
6. 감사의 글
이 명세의 개선에 기여한 모든 기여자분께 특별히 감사드립니다.