[HTTP 완벽 가이드] 17장. 내용 협상과 트랜스코딩

밈무·2023년 3월 4일
0

HTTP완벽가이드

목록 보기
12/14

종종 하나의 URL이 여러 리소스에 대응할 필요가 있는 경우가 있다.
ex) 콘텐츠를 여러 언어로 제공하는 경우
이런 판단을 하게 해주는 게 내용 협상 방법이다.
서로 다른 버전의 리소스가 배리언트라고 불린다.

내용 협상 기법

  • 방법 세가지
    1. 클라이언트 주도 협상 : 클라이언트에게 선택지를 준다.
    2. 서버 주도 협상 : 서버가 자동으로 판단
    3. 투명한 협상 : 중개자에게 선택하도록 부탁한다.

클라이언트 주도 협상

동작 방법

클라이언트가 요청을 보내면 서버는 클라이언트에게 선택지를 보내주고 클라이언트가 그 중에서 선택한다.

장점

  • 서버 입장에서 가장 구현하기 쉽다.
  • 클라이언트는 최선의 선택을 할 수 있다.

단점

  • 대기 시간이 증가한다. 즉, 올바른 콘텐츠를 얻으려면 최소 두번의 요청이 필요하다.
    1. 한번은 목록을 얻음
    2. 두번째는 선택한 사본을 얻음
  • 여러 개의 URL을 요구한다.
    ex) abc.com/eng, abc.com/kor

서버 주도 협상

동작 방법

서버가 클라이언트의 요청 헤더(클라이언트가 무엇을 선호하는지를 담는다)를 검증해서 어떤 버전을 제공할지 정한다.

  • 내용 협상 헤더 : Accept
  • 그 외 헤더 : User-Agent
  • q값 메커니즘 : HTTP는 서버가 가장 적절한 것을 선택할 수 있도록 q값 메커니즘을 제공한다. (Accept-Language : en;q=0.5, fr;q=0.0, nl;q=1.0)
    클라이언트의 선호에 맞추기 위해 트랜스 코딩하기도 한다.
  • Vary헤더 : HTTP는 서버가 다운스트림 장치에게 요청이 어떻게 평가되는지 말해줄 수 있도록 Vary헤더를 제공한다.
    서버가 내줄 응답의 최선의 버전을 결정하기 위해 어떤 요청 헤더를 참고하고 있는지 말해준다.

장점

  • 클라이언트 주도 협상보다 빠르다.

단점

  • 만약 헤더에 맞는 것이 없으면 서버는 추측을 해야한다.

투명한 협상

동작 방법

투명한 중간 장치(주로 프락시 캐시)가 서버를 대신해서 협상한다.

장점

  • 웹 서버가 협상을 할 필요가 없다.
  • 클라이언트 주도 협상보다 빠르다.

단점

  • 정형화된 명세가 없다.

트랜스 코딩

서버가 클라이언트의 요구에 맞는 문서를 아예 가지고 있지 않은 경우 에러를 내지 않고 클라이언트가 사용할 수 있는 무언가로 변환해준다.
ex) 고해상도 이미지 -> 저해상도 이미지

  • 세종류
    1. 포맷변환
    2. 정보합성
    3. 내용주입

포맷 변환

데이터를 클라이언트가 볼 수 있도록 한 포맷에서 다른 포맷으로 변환한다.
ex)HTML -> WML

정보 합성

문서에서 정보의 요점을 추출한다.
ex) 광고 제거

콘텐츠 주입

양을 늘리는 변환
ex) 자동 광고 생성과 사용자 추적 시스템

0개의 댓글