← 질문 목록
#357깊이 0
응답을 압축하면 무엇을 치르는가?
전송량이 주는 대신 보내는 쪽과 받는 쪽 모두 CPU와 시간을 쓴다. 그래서 늘 이득이 아니다.
| 대상 | 압축이 이득인가 | 왜 |
|---|---|---|
| 큰 텍스트와 JSON | 대개 이득이다 | 반복이 많아 크게 줄어든다 |
| 이미 압축된 이미지와 동영상 | 대개 손해다 | 더 안 줄고 CPU만 쓴다 |
| 아주 작은 응답 | 대개 손해다 | 줄어드는 양보다 덧붙는 정보가 크다 |
무엇으로 압축할지는 협상으로 정한다. 받는 쪽이 다룰 수 있는 방식을 알리고, 서버가 그중 하나를 골라 무엇으로 압축했는지 적어 보낸다.
표가 대개라고만 적은 이유가 있다. 같은 종류라도 내용에 반복이 얼마나 있는지, 어떤 방식으로 얼마나 세게 줄이는지에 따라 갈린다.
방식마다 성질이 다르고, 같은 방식 안에서도 세기를 올리면 CPU를 더 쓴다. 같은 파일을 요청마다 다시 압축하는 것이 가장 아까운 자리다.
그래서 압축이 잘 듣는 정적 파일은 빌드할 때 미리 압축해 두고 그것을 내보낸다. 압축 값을 한 번만 치른다.
주의
비밀 값이 섞인 응답에는 조심할 자리가 있다. 압축은 반복을 줄이는 것이라, 줄어든 크기가 그 값을 짐작할 단서가 되기도 한다.
이미 압축된 형식과 작은 응답은 압축 이득이 작다. 전부 켜는 것이 답이 아니다.