Goでサーバー側のアプリケーションを書き始めています。 Accept-Encoding要求ヘッダーを使用して、応答エンティティをGZIPするかどうかを判断したいと思います。私は、http.Serveまたはhttp.ServeFileメソッドを使用してこれを直接行う方法を見つけたいと思っていました。
これは非常に一般的な要件です。何かを見逃したか、独自のソリューションを展開する必要がありますか?
Gzipで圧縮されたHTTP応答の「すぐに使える」サポートはまだありません。ただし、追加するのは非常に簡単です。見て
https://Gist.github.com/the42/1956518
また
https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/cgUp8_ATNtc
New York Timesは Go用gzipミドルウェアパッケージ をリリースしました。
http.HandlerFunc
をGzipHandler
に渡すだけで完了です。次のようになります。
package main
import (
"io"
"net/http"
"github.com/nytimes/gziphandler"
)
func main() {
withoutGz := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain")
io.WriteString(w, "Hello, World")
})
withGz := gziphandler.GzipHandler(withoutGz)
http.Handle("/", withGz)
http.ListenAndServe("0.0.0.0:8000", nil)
}