Gzip 压缩

中间件 gzip 为 Macaron 实例 的响应内容提供 Gzip 压缩。请确保在其它会向响应流写入内容的中间件之前注册该服务。

下载安装

  1. go get github.com/go-macaron/gzip

使用示例

  1. package main
  2.  
  3. import (
  4. "github.com/go-macaron/gzip"
  5. "gopkg.in/macaron.v1"
  6. )
  7.  
  8. func main() {
  9. m := macaron.Classic()
  10. m.Use(gzip.Gziper())
  11. // 注册路由
  12. m.Run()
  13. }

在这个例子中,静态资源不会被 Gzip 压缩,如果想压缩它们,则可以使用以下方法:

  1. package main
  2.  
  3. import (
  4. "github.com/go-macaron/gzip"
  5. "gopkg.in/macaron.v1"
  6. )
  7.  
  8. func main() {
  9. m := macaron.New()
  10. m.Use(macaron.Logger())
  11. m.Use(macaron.Recovery())
  12. m.Use(gzip.Gziper())
  13. m.Use(macaron.Static("public"))
  14. // 注册路由
  15. m.Run()
  16. }

或者选择只压缩某一组路由的响应内容:

  1. // ...
  2.  
  3. func main() {
  4. m := macaron.Classic()
  5. m.Group("/gzip", func() {
  6. // ...
  7. }, gzip.Gziper())
  8. // ...
  9. m.Run()
  10. }

自定义选项

该服务允许接受一个参数来进行自定义选项(gzip.Options):

  1. // ...
  2. m.Use(gzip.Gziper(gzip.Options{
  3. // 压缩级别,可以是 DefaultCompression(-1)、ConstantCompression(-2)
  4. // 或介于包括 BestSpeed(1) 和 BestCompression(9) 在内,这两者之间的任意整数。
  5. // 默认为 4
  6. CompressionLevel: 4,
  7. }))