compress.go — fiber Source File
Architecture documentation for compress.go, a go file in the fiber codebase. 1 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR dbda7960_96fc_de94_3b5b_209ae85b21e1["compress.go"] 4809913a_4bc9_08d2_f6bd_d40ce1eb7266["strings"] dbda7960_96fc_de94_3b5b_209ae85b21e1 --> 4809913a_4bc9_08d2_f6bd_d40ce1eb7266 style dbda7960_96fc_de94_3b5b_209ae85b21e1 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
package compress
import (
"strings"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/etag"
"github.com/gofiber/utils/v2"
"github.com/valyala/fasthttp"
)
func hasToken(header, token string) bool {
for part := range strings.SplitSeq(header, ",") {
if utils.EqualFold(utils.TrimSpace(part), token) {
return true
}
}
return false
}
func shouldSkip(c fiber.Ctx) bool {
if c.Method() == fiber.MethodHead {
return true
}
status := c.Response().StatusCode()
if status < 200 ||
status == fiber.StatusNoContent ||
status == fiber.StatusResetContent ||
status == fiber.StatusNotModified ||
status == fiber.StatusPartialContent ||
len(c.Response().Body()) == 0 ||
c.Get(fiber.HeaderRange) != "" ||
hasToken(c.Get(fiber.HeaderCacheControl), "no-transform") ||
hasToken(c.GetRespHeader(fiber.HeaderCacheControl), "no-transform") {
return true
}
return false
}
func appendVaryAcceptEncoding(c fiber.Ctx) {
vary := c.GetRespHeader(fiber.HeaderVary)
if vary == "" {
c.Set(fiber.HeaderVary, fiber.HeaderAcceptEncoding)
return
}
if hasToken(vary, "*") || hasToken(vary, fiber.HeaderAcceptEncoding) {
return
}
c.Set(fiber.HeaderVary, vary+", "+fiber.HeaderAcceptEncoding)
}
// New creates a new middleware handler
func New(config ...Config) fiber.Handler {
// Set default config
cfg := configDefault(config...)
// Setup request handlers
var (
fctx = func(_ *fasthttp.RequestCtx) {}
// ... (66 more lines)
Domain
Subdomains
Classes
Dependencies
- strings
Source
Frequently Asked Questions
What does compress.go do?
compress.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in compress.go?
compress.go defines 4 function(s): New, appendVaryAcceptEncoding, hasToken, shouldSkip.
What does compress.go depend on?
compress.go imports 1 module(s): strings.
Where is compress.go in the architecture?
compress.go is located at middleware/compress/compress.go (domain: FiberCore, subdomain: Adapters, directory: middleware/compress).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free