Demo 学 Echo Part14 HTTP Gzip压缩
如果不采用Echo时,可以使用第三方库gziphandler
,Echo直接用Gzip中间件。
HTTP Gzip 就是耗费一丢丢cpu,但是减少了网络传输的大小,从而提升传输速度也减少了带宽投入。
只要Rquest header中有Accept-Encoding: gzip, deflate
就说明浏览器支持HTTP Gzip,现代浏览器估计没有不支持的。当然后端处理也需要响应头也要插入Content-Encoding: gzip
才行。
么有采用HTTP Gzip看看传输大小:
package main
import (
"io"
"net/http"
"os"
)
func main() {
mux := new(http.ServeMux)
mux.HandleFunc("/image", func(w http.ResponseWriter, r *http.Request) {
f, err := os.Open("sample.png")
if f != nil {
defer f.Close()
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
_, err = io.Copy(w, f)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
})
server := new(http.Server)
server.Addr = ":9000"
server.Handler = mux
server.ListenAndServe()
}
效果
用上Gzip
package main
import (
"net/http"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
func main() {
e := echo.New()
e.Use(middleware.Gzip())
e.Static("/assets", "./assets")
e.GET("/image", func(c echo.Context) error {
return c.HTML(http.StatusOK, "<img src='assets/terminal.png'>")
})
e.Logger.Fatal(e.Start(":9000"))
}
效果:
图片实际是43K,压缩成了33.9K了。
最后修改于 2019-08-17