Claude 提示缓存省钱指南:缓存写入与命中怎么计费
长系统提示、大段文档、长时间的 Claude Code 会话,最大的开销往往是反复发送的输入。用好提示缓存,重复部分只按很低的命中价计费。本文讲清缓存的计费方式、开启方法和省钱效果。
维护说明:2026-10-22 已核对本站缓存计费规则与 Anthropic 官方提示缓存文档;示例按更新日价格计算。
1. 提示缓存是什么
每次调用模型都要把系统提示、文档、历史对话重新发一遍。提示缓存允许把这些固定不变的开头内容存起来,下次请求开头相同时直接读取缓存,按远低于输入价的“缓存命中”价格计费,响应也更快。
2. 缓存怎么计费
以各型号自身的输入单价为基准(按本站当前价格计算,各型号的具体单价见 Claude API 价格详解):
| 模型 | 缓存命中价 ÷ 输入价 | 5 分钟缓存写入 | 1 小时缓存写入 |
|---|---|---|---|
claude-opus-5-5 | 约 5% | 1.25 倍 | 2.00 倍 |
claude-sonnet-5-5 | 约 5% | 1.25 倍 | 2.00 倍 |
claude-haiku-5-5 | 约 10% | 1.25 倍 | 2.00 倍 |
claude-fable-5-1 | 约 2% | 1.25 倍 | 2.00 倍 |
写入只收一次,比普通输入略贵;之后每次命中都很便宜。所以只要同一段内容会被重复使用两次以上,开缓存基本都划算。
3. 能省多少:一个例子
一个 50K Token 的系统提示(比如完整的产品文档),用 Sonnet 5.5 在 5 分钟内处理 20 个问题,只看这段系统提示的费用:
- 不用缓存:20 × 50K × 输入价 = $1.9(约 ¥12.98)
- 使用 5 分钟缓存:写入 1 次 + 命中 19 次 = $0.209(约 ¥1.43)
这段内容的费用下降约 89%。按默认汇率 6.83 换算,实际以控制台为准。
4. 在请求里开启缓存
使用 Claude 原生接口(/v1/messages),在要缓存的内容块最后加上 cache_control。缓存按前缀匹配,标记位置之前的全部内容都会被缓存:
curl https://api.302api.com/v1/messages \
-H "x-api-key: ${API302_KEY}" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"system": [
{"type": "text", "text": "(这里放很长的固定内容,如产品文档)",
"cache_control": {"type": "ephemeral"}}
],
"messages": [{"role": "user", "content": "根据文档回答:……"}]
}'需要 1 小时缓存时,把 cache_control 写成 {"type": "ephemeral", "ttl": "1h"}。请求格式与 Anthropic 官方一致,只需把地址换成 https://api.302api.com。
使用建议:固定内容放最前面,变化的内容(用户问题、时间、随机数)放最后;不要在系统提示里插入每次都变的内容,否则缓存永远不会命中。
常见问题
Claude Code 需要手动开启缓存吗?
不需要。Claude Code 会自动为系统提示、项目上下文和对话历史设置缓存,长会话里大部分输入都会命中缓存。可以在控制台调用记录里看到每次请求的缓存命中和写入 Token。
怎么确认缓存真的命中了?
看响应里的 usage:Claude 原生接口中 cache_read_input_tokens 是命中的 Token,cache_creation_input_tokens 是本次写入的 Token。控制台调用记录也会分别列出。
为什么加了 cache_control 却没有命中?
常见原因:缓存内容之前的部分有变化(比如在系统提示开头插入了时间戳);超过了有效期;内容太短,没有达到官方的最低缓存长度。缓存按前缀匹配,要把固定不变的内容放在最前面。
5 分钟和 1 小时缓存怎么选?
同一段内容在 5 分钟内会被反复使用(例如连续对话、批量处理),用 5 分钟缓存,每次命中还会刷新有效期;调用间隔较长但一小时内会再用到,用 1 小时缓存,写入价更高。