Caddy 是一款功能强大的网络服务器,而 caddyserver/cache-handler
模块为其提供了强大的分布式 HTTP 缓存功能。本文将带你了解这个模块的特点、基本配置以及一些高级用法。
友情链接:ACEJoy
模块简介
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
caddyserver/cache-handler 模块是 Caddy 分布式 HTTP 缓存的关键组件,它提供了灵活的配置选项,满足不同的缓存需求。
通过遵循 HTTP 缓存标准和支持多种缓存提供者,Caddy 能够提供高效且可靠的缓存服务。
使用 caddyserver/cache-handler 模块可以显著提升网站性能,减少服务器负载,提高用户体验。
文章强调了缓存配置的重要性,包括全局和特定路径的缓存策略,以及如何通过 REST API 管理缓存。
作为一款现代化的网络服务器,Caddy 通过 caddyserver/cache-handler 模块展现了其在缓存领域的先进性和适应性。