Cache 标头

未匹配的标注

Cache

用于 Fiber 的缓存中间件,旨在拦截响应并缓存它们。这个中间件将使用c.Path()作为唯一标识符来缓存BodyContent-TypeStatusCode。特别感谢 @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,
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/cac...

译文地址:https://learnku.com/docs/gofiber/2.x/cac...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~