반응형

Chapter04 Gzip 컴포넌트.

 이번 장에서는 gzip 인코딩을 이용해서 HTTP 응답을 압축하여 응답의 크기를 줄여 속도를 개선하는 방법을 보여준다. 


1. 압축을 적용하는 방법.

HTTP/1.1 에서부터 웹 클라이언트는 HTTP 요청의 Accept-Encoding 헤더를 이용해 압축의 지원 여부를 보내주게 된다. 웹 서버는 응답 헤더 안의 Content-Encoding 속성을 통하여 웹 클라이언트에게 사용된 압축 방식을 알려준다. gzip 과 deflate 포맷을 사용할 수 있는데 주로 gzip을 사용한다.


2. 무엇을 압축해야 하는가?

Gzip은 HTML문서, 스크립트와 스타일시트를 압축할 수 있지만 이미지와 PDF는 이미 압축된 파일이기 때문에 gzip 압축을 적용해서는 안 된다. 일반적으로 gzip은 1~2KB 보다 큰 파일일 경우에 적용해 볼 만한 가치가 있다.


3. 압축률.

 gzip이 적용된 파일은 일반적으로 약 70% 정도의 압축 효과를 가지며 deflate 보다 평균적으로 높은 압축률을 가지고 있다.


4. 설정.

gzip 설정은 Apache 버전에 따라 다른데 Apache 1.3 에서는 mod_gzip 이라는 모듈이 제공되고 있고, Apache 2.x 에서는 mod_deflate 모듈을 사용한다. 자세한 내용은 Apache 문서를 참고 할 것.!


5. 프록시 캐싱.

 프록시가 캐시에 압축된 정보를 가지고 있고 브라우저의 압축 지원 여부에 상관없이 압축된 버전의 콘텐츠를 전달하게 될 경우에 문제가 발생하는데 이럴 경우에는 서버의 헤더에 Vary: Accept-Encoding을  추가한다. 


6. 예외적인 경우.

브라우저가 지원하지 않을 경우를 고려하여 안전성이 보장된 브라우저에만 압축을 전달해야 하는데 이런 접근 방식을 Browser Whitelist 라고 한다. Apache 설정을 통하여 User-Agent 에 대해 화이트리스트 설정을 할 수 있다. 이러한 설정들은 각 사이트의 상황에 맞추어 내려져야 한다.


7. Gzip 의 효과.

스크립트와 스타일시트도 gzip 압축을 하자.

반응형

+ Recent posts