caddy缓存插件使用

它是什么Caddy 默认不带反向代理缓存,caddy-cache 这类插件补上这块能力。

Caddy 默认不带反向代理缓存,caddy-cache 这类插件补上这块能力。本页整理它的核心功能、适用场景、通过 xcaddy 构建或使用 Docker 镜像的获取路径,以及配置生效与验证要点,供自建站点与反向代理运维者参考。

👤
作者:谢林峰 | 更新:2026-10-03
软件信息
更新 2026-10-03

详细介绍

简介

Caddy 是用 Go 编写的 Web 服务器,默认启用 HTTPS,支持 HTTP/1.1、HTTP/2 与 HTTP/3,但它没有内置的反向代理缓存。caddy-cache 这类缓存插件正是为补齐这块能力而生:让经过 Caddy 反向代理的响应内容留在 Caddy 一侧,重复请求不再每次回源。适合自建博客、静态站点,以及用统一入口转发多个后端服务的运维者与开发者,核心优势是沿用 Caddy 的插件体系与 Caddyfile 配置方式,扩展能力而不必改动主程序。

核心功能

  • 缓存经反向代理转发的响应内容,相同请求再次到达时由 Caddy 直接返回,减少回源次数与上游服务的持续输出压力。
  • 以 Caddyfile 指令的形式接入配置:插件为 Caddyfile 注册新指令,指令可在服务器启动、关闭或配置变更等时机执行代码。
  • 与 Caddy 默认启用的 HTTPS 配合工作,缓存作用于自动申请、自动续期证书的站点,HTTP 跳转也无需手动编写。
  • 覆盖 HTTP/1.1、HTTP/2、HTTP/3 三种协议上的请求,与 Caddy 自身的协议支持范围保持一致。
  • 可通过 Caddy 官方插件 registry 检索与获取,插件条目、命令行获取方式以官方页面为准。
  • 与内置指令组合使用,例如 file_server 与各类负载均衡策略,拼出更完整的转发与缓存链路。
  • 配置改动即时生效:Caddyfile 在更改时会重新加载,需要零停机时可改用 HTTP API 配置。

使用场景

  • 博客与静态站点:例如 Caddy 2 搭配 Hugo 与 Remark42 的轻量博客架构,部署在云服务器上,DNS 记录交由 Cloudflare 管理。
  • 多服务统一入口:自建服务端口混乱时,用反向代理按域名把流量分流至多个后端服务,同时自动申请与续期证书。
  • 上游负载偏高的接口:当客户端到 Caddy 的链路较慢时,由 Caddy 一侧承接响应,避免后端服务一直向慢客户端传输数据。
  • 希望减少证书管理摩擦的迁移场景:一个域名几行设定即可完成 HTTPS 自动申请与续期,替换 Nginx 时配置更短。
  • 组合型网络方案:GitHub 的 caddy 主题页收录了以 Nginx 或 Caddy 配合 V2Ray、Xray、Hysteria 等的优化配置与集成插件的示例。

安装与获取步骤

  1. 先确认目标插件不在标准模块内:Caddy 的官方软件包只包含标准模块,缓存类第三方插件需要另行获取。
  2. 通过 Caddy 官方插件 registry 查找缓存插件,确认其项目地址与仓库说明,具体条目以官方页面为准。
  3. 选择获取方式:用 xcaddy 从源码构建带插件的 Caddy,或使用下载页面获取成品,或直接采用插件作者提供的 Docker Image。
  4. 在 Caddyfile 中按插件文档注册指令并写出缓存规则,指令名与参数以插件页面为准,不要照搬其他项目的写法。
  5. 重新加载配置使指令生效:Caddyfile 更改时会自动重新加载;需要零停机时改用 HTTP API 配置方式。

配置与验证要点

  • 核对缓存是否命中:对同一资源连续请求两次,第二次应由 Caddy 直接返回而不再打到后端,可用后端访问日志比对请求次数。
  • 核对插件是否编入:若运行的是官方静态二进制或系统软件包,第三方缓存指令会无法识别,需换成自行构建的版本或插件作者的镜像。
  • 参考社区讨论:Caddy 社区论坛存在 caddy-cache 主题帖,其中有基准测试相关的讨论,可作为选型时的旁证。
  • 查阅开发文档:Caddy 开发者 wiki 的「开发插件:指令」页面说明了如何为 Caddyfile 注册新指令,适合需要自定义指令行为时阅读。

注意事项

  • 官方软件包只包含标准模块,直接替换二进制不会带来缓存能力,需按上述路径重新构建或使用插件作者提供的镜像。
  • 具体指令名、缓存目录、过期时间等参数在检索素材中没有出现,一律以插件官方页面为准。
  • 缓存对动态内容要谨慎:它会改变响应的新鲜程度,收益主要体现在可缓存的静态响应与只读接口上。
  • Windows 环境有社区反馈称「不会编辑 Go 语言、生成 Caddy 是个遗憾」,跨平台构建前需先确认本机工具链是否齐备。
  • 第三方插件的维护状态与兼容的 Caddy 版本以项目仓库页面为准,升级 Caddy 前先核对插件说明。

更新记录

最近更新:2026-10-03

软件参数速览

本站更新时间2026-10-03

下载

常见问题

Caddy 自带反向代理缓存吗?

不带。目前 Caddy 最大的缺点是没有内置的反向代理缓存,需要自己加第三方插件编译,或者直接使用插件作者提供的 Docker Image。

官方 deb/rpm 软件包能直接启用缓存插件吗?

不能。官方软件包只包含标准模块,第三方插件需要使用 xcaddy 从源码构建、使用下载页面,或部署插件作者提供的镜像。

不会写 Go 语言,在 Windows 上还能用缓存插件吗?

社区论坛有用户反馈在 Windows 上「不会编辑 Go 语言、生成 Caddy 是个遗憾」。可行路径是使用插件作者提供的 Docker Image 或下载页面的成品,具体以项目页为准。

修改 Caddyfile 之后要不要手动重启 Caddy?

不需要。Caddyfile 在更改时会重新加载;若要实现零停机,可通过 HTTP API 配置方式完成,具体操作以官方文档为准。

缓存插件的指令应该写在哪里、怎么写?

写在 Caddyfile 中。插件会为 Caddyfile 注册新指令,常见做法是用指令配置并向服务器传参;指令名与参数以插件官方页面为准。

Caddy 与 Traefik 在插件与容器场景下如何取舍?

社区讨论指出 Traefik 目前 Docker 支持更好,而 Caddy 拥有更好的 Web 服务器功能、更容易使用,且 Caddy 2 正在开发 Kubernetes Ingress 控制器。

加了缓存会不会反而拖慢后端服务?

方向相反:缓存与缓冲思路一致,客户端到 Caddy 链路较慢时由 Caddy 承接响应,减少后端持续输出,从而降低上游服务负载。

去哪里找可用的 Caddy 缓存插件项目?

可浏览 GitHub 的 caddy 主题页 https://github.com/topics/caddy 与 Caddy 社区论坛的 caddy-cache 主题帖 https://caddy.community/t/caddy-cache/2165,具体仓库以项目页面为准。

相关推荐