HTTP 압축
| HTTP |
|---|
| 파일:HTTP logo.svg |
| 요청 방식 |
| 헤더 필드 |
| 상태 코드 |
HTTP 압축(HTTP compression)은 전송 속도와 대역폭 이용을 개선하기 위해 웹 서버와 웹 브라우저에 빌드되는 기능이다.[1]
HTTP 데이터는 서버로부터 전송되기 전에 압축된다. 호환 브라우저들은 유효한 포맷을 다운로드하기 전에 어느 메소드가 지원되는지 서버에 알린다. 호환 압축 메소드를 지원하지 않는 브라우저들은 압축되지 않은 데이터를 다운로드한다. 가장 흔한 압축 스킴으로는 Gzip와 DEFLATE가 있다. 그러나 사용 가능한 전체 스킴 목록은 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 압축 지원 서버
- SAP NetWeaver
- 마이크로소프트 IIS
- 아파치 HTTP 서버(mod_deflate를 통해. 이름에도 불구하고 gzip만 지원[4])
- Hiawatha HTTP server: 미리 압축된 파일을 서비스함[5]
- 제우스 웹 서버
- Lighttpd (mod_compress 및 더 새로운 mod_deflate (1.4.42+)를 통해)
- Nginx – 내장
- 제티 서버
- GeoServer
- 아파치 톰캣
- IBM 웹스피어
- AOLserver
- HAProxy
- 바니시
각주
- ↑ “Using HTTP Compression (IIS 6.0)”. Microsoft Corporation. 2010년 2월 9일에 확인함.
- ↑ RFC 2616, Section 3.5: "The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens."
- ↑ 'RFC2616 "Transfer-Encoding: gzip, chunked" not handled properly', Chromium Issue 94730
- ↑ “mod_deflate - Apache HTTP Server Version 2.4 - Supported Encodings”.
- ↑ “Extra part of Hiawatha webserver's manual”. 2016년 3월 22일에 원본 문서에서 보존된 문서. 2019년 4월 20일에 확인함.
외부 링크
- RFC 2616: Hypertext Transfer Protocol – HTTP/1.1
- HTTP Content-Coding Values by Internet Assigned Numbers Authority
- Compression with lighttpd
- Coding Horror: HTTP Compression on IIS 6.0 보관됨 2014-02-06 - 웨이백 머신
- “15 Seconds: Web Site Compression”. 2011년 7월 16일에 원본 문서에서 보존된 문서. 2019년 4월 20일에 확인함.
- HTTP Compression: resource page by the founder of VIGOS AG, Constantin Rack
- Using HTTP Compression 보관됨 2016-03-14 - 웨이백 머신 by Martin Brown of Server Watch
- Using HTTP Compression in PHP
- Dynamic and static HTTP compression with Apache httpd
- 잘못된 파일 링크가 포함된 문서
- 웹아카이브 틀 웨이백 링크
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 웹 개발
- 무손실 압축 알고리즘
- HTTP