HTTP 압축

위키백과, 우리 모두의 백과사전.

HTTP 압축(HTTP compression)은 전송 속도와 대역폭 이용을 개선하기 위해 웹 서버웹 브라우저에 빌드되는 기능이다.[1]

HTTP 데이터는 서버로부터 전송되기 전에 압축된다. 호환 브라우저들은 유효한 포맷을 다운로드하기 전에 어느 메소드가 지원되는지 서버에 알린다. 호환 압축 메소드를 지원하지 않는 브라우저들은 압축되지 않은 데이터를 다운로드한다. 가장 흔한 압축 스킴으로는 GzipDEFLATE가 있다. 그러나 사용 가능한 전체 스킴 목록은 IANA에 의해 관리되고 있다.[2] 게다가 서드파티들은 새 메소드들을 개발하며 이것들을 자사의 제품에 포함시키는데, 이를테면 구글 크롬 브라우저에 구현된 스킴이자 구글 서버에 사용되는 구글 Shared Dictionary Compression for HTTP(SDCH)을 들 수 있다.

HTTP에서 수행할 수 있는 2가지 다른 방식의 압축이 있다. 더 낮은 단계에서 전송 인코딩 헤더 필드는 HTTP의 페이로드가 압축되었음을 지시할 수 있다. 더 높은 단계에서 콘텐츠 인코딩 헤더 필드는 전송, 캐시, 기타 참조되는 리소스가 압축됨을 지시할 수 있다. 콘텐츠 인코딩을 사용하는 압축은 전송 인코딩보다 더 널리 지원되며 일부 브라우저는 서버 내 버그를 일으키는 것을 예방하기 위해 전송 인코딩 압축 지원을 광고하지 않는다.[3]

압축 스킴 협상[편집]

대부분의 경우 SDCH를 제외했을 때 협상은 RFC 2616에 기술된 바대로 2단계로 끝난다:

1. 웹 브라우저HTTP 요청에 토큰 목록을 포함시킴으로써 지원되는 압축 스킴을 알린다. Content-Encoding의 경우 필드 내 목록은 Accept-Encoding으로 호칭되며 Transfer-Encoding의 경우 필드 이름은 TE로 호칭된다.

GET /encrypted-area HTTP/1.1
Host: www.example.com
Accept-Encoding: gzip, deflate

2. 서버가 하나 이상의 압축 스킴을 지원하는 경우 나가는 데이터는 양측에서 모두 지원되는 하나 이상의 메소드에 의해 압축된다. 이 경우라면, 서버는 HTTP 응답 안에 사용되는 스킴과 함께 Content-Encoding 또는 Transfer-Encoding를 추가하게 되며 쉼표로 구분한다.

HTTP/1.1 200 OK
Date: mon, 26 June 2016 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip

HTTP 압축 지원 서버[편집]

각주[편집]

  1. “Using HTTP Compression (IIS 6.0)”. Microsoft Corporation. 2010년 2월 9일에 확인함. 
  2. RFC 2616, Section 3.5: "The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens."
  3. 'RFC2616 "Transfer-Encoding: gzip, chunked" not handled properly', Chromium Issue 94730
  4. “mod_deflate - Apache HTTP Server Version 2.4 - Supported Encodings”. 
  5. “Extra part of Hiawatha webserver's manual”. 

외부 링크[편집]