code: func CompressFilter(c *Controller, fc []Filter) {
  	if c.Response.Out.internalHeader.Server != nil && Config.BoolDefault("results.compressed", false) {
  		if c.Response.Status != http.StatusNoContent && c.Response.Status != http.StatusNotModified {
  			if found, compressType, compressWriter := detectCompressionType(c.Request, c.Response); found {
  				writer := CompressResponseWriter{
  					ControllerResponse: c.Response,
  					OriginalWriter:     c.Response.GetWriter(),
  					compressWriter:     compressWriter,
  					compressionType:    compressType,
  					headersWritten:     false,
  					closeNotify:        make(chan bool, 1),
  					closed:             false,
  				}
  				// Swap out the header with our own
  				writer.Header = NewBufferedServerHeader(c.Response.Out.internalHeader.Server)
  				c.Response.Out.internalHeader.Server = writer.Header
  				if w, ok := c.Response.GetWriter().(http.CloseNotifier); ok {
  					writer.parentNotify = w.CloseNotify()
  				}
  				c.Response.SetWriter(&writer)
  			}
  		} else {
  			compressLog.Debug("CompressFilter: Compression disabled for response ", "status", c.Response.Status)
  		}
  	}
  	fc[0](c, fc[1:])
  }
docs: // CompressFilter does compression of response body in gzip/deflate if
  // `results.compressed=true` in the app.conf