Help us shape the future of Go! Take the 2026 Go Developer Survey

cache

package
v3.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2026 License: MIT Imports: 27 Imported by: 6

Documentation

Overview

Special thanks to @codemicro for moving this to fiber core Original middleware: github.com/codemicro/fiber-cache

Index

Constants

This section is empty.

Variables

View Source
var ConfigDefault = Config{
	Next:                  nil,
	Expiration:            5 * time.Minute,
	CacheHeader:           "X-Cache",
	DisableCacheControl:   false,
	CacheInvalidator:      nil,
	DisableValueRedaction: false,
	KeyGenerator:          nil,
	DisableQueryKeys:      false,
	KeyHeaders:            []string{fiber.HeaderAccept, fiber.HeaderAcceptEncoding, fiber.HeaderAcceptLanguage},
	KeyCookies:            nil,
	Methods:               []string{fiber.MethodGet, fiber.MethodHead},
	DisableVaryHeaders:    false,
	ExpirationGenerator:   nil,
	StoreResponseHeaders:  false,
	Storage:               nil,
	MaxBytes:              1 * 1024 * 1024,
}

ConfigDefault is the default config

Functions

func New

func New(config ...Config) fiber.Handler

New creates a new middleware handler

Types

type Config

type Config struct {
	// Storage is used to store the state of the middleware
	//
	// Default: an in-memory store for this process only
	Storage fiber.Storage

	// Next defines a function to skip this middleware when returned true.
	//
	// Optional. Default: nil
	Next func(c fiber.Ctx) bool

	// CacheInvalidator defines a function to invalidate the cache when returned true
	//
	// Optional. Default: nil
	CacheInvalidator func(fiber.Ctx) bool

	// KeyGenerator allows you to generate custom keys.
	//
	// When nil, the middleware uses a structured key based on:
	//   - Request scheme and host, as c.Scheme() and c.Host() report them
	//     (bounded; two hosts never share an entry)
	//   - Request path (bounded to 192 bytes, hashed if longer)
	//   - Canonical query string (sorted parameters, bounded)
	//   - Selected request headers (from KeyHeaders)
	//   - Selected cookies (from KeyCookies)
	//
	// The resulting cache key is always partitioned by request method internally.
	//
	// Default: nil
	KeyGenerator func(fiber.Ctx) string

	// ExpirationGenerator allows you to generate a custom expiration per request.
	// If nil, the Expiration value is used.
	//
	// Default: nil
	ExpirationGenerator func(fiber.Ctx, *Config) time.Duration

	// CacheHeader header on response header, indicate cache status, with the following possible return value
	//
	// hit, miss, unreachable
	//
	// Optional. Default: X-Cache
	CacheHeader string

	// KeyHeaders is the set of request headers that can change the selected representation and
	// therefore should partition cache entries. Set this to an empty slice to disable
	// header-based partitioning.
	//
	// Header names are normalized to lowercase for case-insensitive matching.
	//
	// Optional. Default: []string{"Accept", "Accept-Encoding", "Accept-Language"}
	KeyHeaders []string

	// KeyCookies is an explicit allow-list of request cookies that should partition cache entries.
	// Cookies are excluded by default to avoid accidental per-user cache fragmentation.
	//
	// Optional. Default: nil
	KeyCookies []string

	// Methods specifies which HTTP methods are eligible for caching.
	// Requests with methods not in this list bypass the cache entirely.
	// Method names are normalized to uppercase automatically.
	// Set to nil to use the default; set to an empty slice to disable caching for all methods.
	//
	// Default: []string{fiber.MethodGet, fiber.MethodHead}
	Methods []string

	// Expiration is the time that a cached response will live
	//
	// Optional. Default: 5 * time.Minute
	Expiration time.Duration

	// Max number of bytes of response bodies simultaneously stored in cache. When limit is reached,
	// entries with the nearest expiration are deleted to make room for new.
	// 0 means no limit
	//
	// Optional. Default: 1 * 1024 * 1024
	MaxBytes uint

	// DisableQueryKeys disables query-string partitioning in cache keys.
	//
	// Optional. Default: false
	DisableQueryKeys bool

	// DisableVaryHeaders disables response Vary-based lookup partitioning.
	//
	// Optional. Default: false
	DisableVaryHeaders bool

	// DisableValueRedaction turns off masking cache keys in logs and error messages when set to true.
	//
	// Optional. Default: false
	DisableValueRedaction bool

	// DisableCacheControl disables client side caching if set to true.
	//
	// When false, a hit whose entry carries no Cache-Control of its own is sent
	// with "public, max-age=<remaining>", or "private, max-age=<remaining>" when
	// the entry holds one user's response: the response's Vary lists Cookie or
	// Authorization, KeyCookies is set, or KeyHeaders names either header.
	//
	// Optional. Default: false
	DisableCacheControl bool

	// StoreResponseHeaders allows you to store additional headers generated by
	// next middlewares and handlers.
	//
	// Default: false
	StoreResponseHeaders bool
	// contains filtered or unexported fields
}

Config defines the config for middleware.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL