code: func Gzip(c lars.Context) {
  
  	c.Response().Header().Add(lars.Vary, lars.AcceptEncoding)
  
  	if strings.Contains(c.Request().Header.Get(lars.AcceptEncoding), lars.Gzip) {
  
  		gw := writerPool.Get().(*gzipWriter)
  		gw.sniffComplete = false
  		w := gw.Writer.(*gzip.Writer)
  		w.Reset(c.Response().Writer())
  		gw.ResponseWriter = c.Response().Writer()
  
  		defer func() {
  
  			if !gw.sniffComplete {
  				// We have to reset response to it's pristine state when
  				// nothing is written to body.
  				c.Response().Header().Del(lars.ContentEncoding)
  				w.Reset(ioutil.Discard)
  			}
  
  			w.Close()
  			writerPool.Put(gw)
  		}()
  
  		c.Response().Header().Set(lars.ContentEncoding, lars.Gzip)
  		c.Response().SetWriter(gw)
  	}
  
  	c.Next()
  }
docs: // Gzip returns a middleware which compresses HTTP response using gzip compression
  // scheme.