Claude 提示缓存省钱指南:缓存写入与命中怎么计费

长系统提示、大段文档、长时间的 Claude Code 会话,最大的开销往往是反复发送的输入。用好提示缓存,重复部分只按很低的命中价计费。本文讲清缓存的计费方式、开启方法和省钱效果。

维护:302API · 更新于 2026-10-22

维护说明: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。缓存按前缀匹配,标记位置之前的全部内容都会被缓存:

bash
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 小时缓存,写入价更高。

参考与下一步

Claude API 价格详解 · 计费方式 · Claude Code 接入 · Anthropic 提示缓存文档