了解 Caddy 的分布式 HTTP 缓存模块 2024-05-31 作者 C3P00 Caddy 是一款功能强大的网络服务器,而 caddyserver/cache-handler 模块为其提供了强大的分布式 HTTP 缓存功能。本文将带你了解这个模块的特点、基本配置以及一些高级用法。 模块简介 caddyserver/cache-handler 是一个基于 Souin 缓存的分布式 HTTP 缓存模块。它具备以下主要特点: 遵循 RFC 7234 标准的 HTTP 缓存。 设置 Cache-Status HTTP 响应头。 提供 REST API 来清除缓存和列出存储的资源。 支持 ESI 标签处理(使用 go-esi 包)。 内置分布式缓存支持。 基本配置 使用最小配置,响应会被缓存 120 秒。以下是一个简单的例子: { cache } example.com { cache reverse_proxy your-app:8080 } 这个配置中,只需添加 cache 指令,所有请求的响应将被缓存 120 秒。 全局选项语法 全局选项允许你更细粒度地控制缓存行为。以下是一些常用的配置选项: { log { level debug } cache { allowed_http_verbs GET POST PATCH api { basepath /some-basepath prometheus souin { basepath /souin-changed-endpoint-path } } badger { path the_path_to_a_file.json } cache_keys { .*\.css { disable_body disable_host disable_method disable_query headers X-Token Authorization hide } } cache_name Another cdn { api_key XXXX dynamic email darkweak@protonmail.com hostname domain.com network your_network provider fastly strategy soft service_id 123456_id zone_id anywhere_zone } etcd { configuration { # Your etcd configuration here } } key { disable_body disable_host disable_method headers Content-Type Authorization } log_level debug mode bypass nuts { path /path/to/the/storage } olric { url url_to_your_cluster:3320 path the_path_to_a_file.yaml configuration { # Your olric configuration here } } regex { exclude /test2.* } stale 200s ttl 1000s default_cache_control no-store } } :4443 respond "Hello World!" 指令选项 缓存指令允许你在更具体的请求路径上应用缓存策略。例如: @match path /path handle @match { cache { cache_name ChangeName cache_keys { (host1|host2).*\.css { disable_body disable_host disable_method disable_query headers X-Token Authorization } } cdn { api_key XXXX dynamic email darkweak@protonmail.com hostname domain.com network your_network provider fastly strategy soft service_id 123456_id zone_id anywhere_zone } key { disable_body disable_host disable_method disable_query headers Content-Type Authorization } log_level debug regex { exclude /test2.* } stale 200s ttl 1000s default_cache_control no-store } } 缓存提供者配置 caddyserver/cache-handler 支持多种缓存提供者,包括 Badger、Etcd、NutsDB、Olric 和 Redis。以下是一些示例配置: Badger badger-path.com { cache { badger { path /tmp/badger/first-match } } } Redis redis-url.com { cache { redis { url 127.0.0.1:6379 } } } 结论 caddyserver/cache-handler 模块为 Caddy 提供了强大的分布式 HTTP 缓存能力。通过灵活的配置选项和多种缓存提供者的支持,你可以根据具体需求优化网站性能。如果你正在寻找一种高效的缓存解决方案,这个模块无疑是一个值得尝试的选择。 参考文献:GitHub – caddyserver/cache-handler: Distributed HTTP caching module for Caddy
Caddy 是一款功能强大的网络服务器,而
caddyserver/cache-handler
模块为其提供了强大的分布式 HTTP 缓存功能。本文将带你了解这个模块的特点、基本配置以及一些高级用法。模块简介
caddyserver/cache-handler
是一个基于 Souin 缓存的分布式 HTTP 缓存模块。它具备以下主要特点:Cache-Status
HTTP 响应头。go-esi
包)。基本配置
使用最小配置,响应会被缓存 120 秒。以下是一个简单的例子:
这个配置中,只需添加
cache
指令,所有请求的响应将被缓存 120 秒。全局选项语法
全局选项允许你更细粒度地控制缓存行为。以下是一些常用的配置选项:
指令选项
缓存指令允许你在更具体的请求路径上应用缓存策略。例如:
缓存提供者配置
caddyserver/cache-handler
支持多种缓存提供者,包括 Badger、Etcd、NutsDB、Olric 和 Redis。以下是一些示例配置:Badger
Redis
结论
caddyserver/cache-handler
模块为 Caddy 提供了强大的分布式 HTTP 缓存能力。通过灵活的配置选项和多种缓存提供者的支持,你可以根据具体需求优化网站性能。如果你正在寻找一种高效的缓存解决方案,这个模块无疑是一个值得尝试的选择。参考文献:GitHub – caddyserver/cache-handler: Distributed HTTP caching module for Caddy