Open
Description
클라이언트가 요청해서 서버가 보내주어야 하는 리소스들은, 압축하면 크기가 줄어드는 경우가 많습니다.
jpg, png와 같은 이미지 파일들은 압축을 해도 큰 변화가 없겠지만, html, js, css 와 같은 종류의 파일들은 그 크기가 수분의 일에서 수십분의 일 까지도 줄어들 수 있을 것입니다.
우리 서버는 트래픽을 절약하기 위해 필요한 경우 리소스를 압축해서 보내줄 수 있어야 합니다.
방법은, Content-Encoding 헤더에 인코딩 방법을 적은 뒤 body에 그 인코딩 방법대로 리소스를 압축해서 보내주는 것입니다.
다만 사전에 어떤 인코딩 방법을 사용할지에 대해 서버와 클라이언트가 협상하여 결정할 필요가 있습니다. 이 과정을 "Content Negotiation"이라고 부릅니다.
허용되는 인코딩 방법을 서버가 알려주고 클라이언트가 선택하는 방법을 Client-Driven Negotiation이라고 하며, 반대로 클라이언트가 선호하는 인코딩을 알려주고 서버가 결정하는 방식을 Server-Driven Negotiation이라고 합니다. 또한 이 둘을 혼합하는 방식도 있는데, 그것은 Transparent Negotiation이라고 부릅니다.
참고자료: RFC 2616 3.5 Content Coding, 12. Content Negotiation