Skip to content

Commit

Permalink
🩹 Fix: Optimize Cache middleware handler (gofiber#3031)
Browse files Browse the repository at this point in the history
* Optimize cache handler

* revert to cfg.KeyGenerator(c) + _ + requestMethod

---------

Co-authored-by: Juan Calderon-Perez <[email protected]>
  • Loading branch information
orvillesimba and gaby authored Jun 12, 2024
1 parent 46fffe4 commit 23bcbd3
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions middleware/cache/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package cache

import (
"slices"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -95,22 +96,17 @@ func New(config ...Config) fiber.Handler {
return c.Next()
}

// Only cache selected methods
var isExists bool
for _, method := range cfg.Methods {
if c.Method() == method {
isExists = true
}
}
requestMethod := c.Method()

if !isExists {
// Only cache selected methods
if !slices.Contains(cfg.Methods, requestMethod) {
c.Set(cfg.CacheHeader, cacheUnreachable)
return c.Next()
}

// Get key from request
// TODO(allocation optimization): try to minimize the allocation from 2 to 1
key := cfg.KeyGenerator(c) + "_" + c.Method()
key := cfg.KeyGenerator(c) + "_" + requestMethod

// Get entry from pool
e := manager.get(key)
Expand Down

0 comments on commit 23bcbd3

Please sign in to comment.