# Compress Middleware Compression middleware for [Fiber](https://github.com/gofiber/fiber) that will compress the response using `gzip`, `deflate` and `brotli` compression depending on the [Accept-Encoding](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding) header. - [Compress Middleware](#compress-middleware) - [Signatures](#signatures) - [Examples](#examples) - [Default Config](#default-config) - [Custom Config](#custom-config) - [Config](#config) - [Default Config](#default-config-1) - [Constants](#constants) ## Signatures ```go func New(config ...Config) fiber.Handler ``` ## Examples First import the middleware from Fiber, ```go import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/compress" ) ``` Then create a Fiber app with `app := fiber.New()`. ### Default Config ```go app.Use(compress.New()) ``` ### Custom Config ```go // Provide a custom compression level app.Use(compress.New(compress.Config{ Level: compress.LevelBestSpeed, // 1 })) // Skip middleware for specific routes app.Use(compress.New(compress.Config{ Next: func(c *fiber.Ctx) bool { return c.Path() == "/dont_compress" }, Level: compress.LevelBestSpeed, // 1 })) ``` ## Config ```go // Config defines the config for middleware. type Config struct { // Next defines a function to skip this middleware when returned true. // // Optional. Default: nil Next func(c *fiber.Ctx) bool // CompressLevel determines the compression algoritm // // Optional. Default: LevelDefault // LevelDisabled: -1 // LevelDefault: 0 // LevelBestSpeed: 1 // LevelBestCompression: 2 Level int } ``` ## Default Config ```go var ConfigDefault = Config{ Next: nil, Level: LevelDefault, } ``` ## Constants ```go // Compression levels const ( LevelDisabled = -1 LevelDefault = 0 LevelBestSpeed = 1 LevelBestCompression = 2 ) ```