[go] net/http 패키지를 사용한 gzip 압축 처리
목차
소개
웹 애플리케이션을 개발할 때, 대용량 파일을 클라이언트로 전송할 때 대역폭을 절약하고자 gzip 압축을 사용할 수 있습니다.
이 글에서는 Go의 net/http
패키지를 사용하여 HTTP 응답 데이터를 gzip으로 압축하는 방법에 대해 설명하겠습니다.
gzip 압축 적용
Go에서 HTTP 핸들러를 작성하여 gzip 압축된 응답을 보내는 예제는 다음과 같습니다.
package main
import (
"compress/gzip"
"io"
"net/http"
"strings"
)
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Encoding", "gzip")
gz := gzip.NewWriter(w)
defer gz.Close()
content := "This is the content that will be gzip compressed."
rdr := strings.NewReader(content)
io.Copy(gz, rdr)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
위 예제에서는 handler
함수에서 Content-Encoding
헤더를 설정하고 gzip.NewWriter
를 사용하여 gzip 스트림을 생성합니다.
그리고 io.Copy
함수를 사용하여 압축된 데이터를 클라이언트로 전송합니다.
요약
이 포스트에서는 Go의 net/http
패키지를 사용하여 HTTP 응답 데이터를 gzip으로 압축하는 방법에 대해 간단히 살펴보았습니다.
이 기술은 클라이언트와 서버 간의 대역폭을 절약하여 웹 애플리케이션의 성능을 향상시킬 수 있습니다.
참고 자료
- Go net/http 패키지 문서
- “The Go Programming Language” - Alan A. A. Donovan, Brian W. Kernighan