Cache 标头
Cache
用于 Fiber 的缓存中间件,旨在拦截响应并缓存它们。这个中间件将使用c.Path()
作为唯一标识符来缓存Body
、Content-Type
和StatusCode
。特别感谢 @codemicro 为 Fiber core 创建的这个中间件!
目录
签名
func New(config ...Config) fiber.Handler
示例
导入作为 Fiber 网络框架一部分的中间件包
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cache"
)
在你启动你的 Fiber 应用程序后,你可以使用以下可能性。
//初始化默认配置
app.Use(cache.New())
// 或者扩展你的配置以进行定制
app.Use(cache.New(cache.Config{
Next: func(c *fiber.Ctx) bool {
return c.Query("refresh") == "true"
},
Expiration: 30 * time.Minute,
CacheControl: true,
}))
或者你可以像这样自定义密钥和过期时间。
app.Use(New(Config{
ExpirationGenerator: func(c *fiber.Ctx, cfg *Config) time.Duration {
newCacheTime, _ := strconv.Atoi(c.GetRespHeader("Cache-Time", "600")
return time.Second * time.Duration(newCacheTime)
},
KeyGenerator: func(c *fiber.Ctx) string {
return c.Path()
}
}))
app.Get("/", func(c *fiber.Ctx) error {
c.Response().Header.Add("Cache-Time", "6000")
return c.SendString("hi")
})
配置
// Config定义了中间件的配置。
type Config struct {
// 下一步定义了一个函数,当返回真时跳过这个中间件。
//
// 可选。默认值:nil
Next func(c *fiber.Ctx) bool
// Expiration是一个缓存响应的时间。
//
// 可选。默认值:1 * time.Minute
Expiration time.Duration
// 如果设置为 "true",CacheControl将启用客户端缓存。
//
// 可选。默认值:false
CacheControl bool
// 钥匙允许你生成自定义的钥匙,默认情况下,使用c.Path()。
//
// 默认: func(c *fiber.Ctx) string {
// return utils.CopyString(c.Path())
// }
keyGenerator func(*fiber.Ctx) string
// 允许你按键生成自定义过期密钥,默认为过期(可选)。
//
// 默认为:nil
ExpirationGenerator func(*fiber.Ctx, *Config) time.Duration
// 存储是用来存储中间件的状态的
//
// 默认情况下:只为该进程提供内存存储。
Storage fiber.Storage
}
默认配置
// ConfigDefault是默认配置
var ConfigDefault = Config{
Next: nil,
Expiration: 1 * time.Minute,
CacheControl: false,
KeyGenerator: func(c *fiber.Ctx) string {
return utils.CopyString(c.Path())
},
ExpirationGenerator : nil,
Storage: nil,
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。