DSH 学习资料站 · 缓存命中

缓存命中(Cache Hit)是什么

从"把算过的东西存起来"的直觉概念,讲到 LLM 的 Prompt 缓存(KV cache), 再到 DeepSeek V4 里"缓存命中输入便宜约 30 倍"的定价逻辑,以及它在 dsh 里的省钱意义。

01什么是缓存命中

拆开来看:

  • 缓存(cache):把算过的结果存起来,下次直接复用,不用重算。
  • 命中(hit):这次请求恰好能用到缓存里的东西 → 命中,省算力、更快、更便宜。
  • 未命中(miss):缓存里没有 / 用不上 → 只能重算一遍。

命中 HIT✅ 复用

上次切好的菜还在冰箱里,直接拿出来用——快、省。
对应:模型复用了之前算好的 Prompt 前缀,收超低价。

未命中 MISS❌ 重算

菜被吃光了 / 换了菜谱,只能重新切——慢、贵。
对应:Prompt 开头变了,缓存全部失效,从头算,收全价。

02LLM 里的 Prompt 缓存(KV Cache)

大模型收到一段很长的输入,要先把它"理解"成内部的一堆向量(即 KV cache)。这一步很吃算力。 服务商的优化做法是:把算好的这部分向量存起来

当你这次请求的开头部分和之前某个请求完全一致时,服务商就能复用之前存好的那段向量, 而不是重新计算——这些 token 就计为"缓存命中",价格便宜非常多。

⚠️ 关键:前缀必须完全一致 缓存是按"连续前缀"复用的。开头一旦有任何改动(哪怕换了一个字、插了一行时间戳), 从改动点往后的整段缓存都会失效,只能从头重算。

03DeepSeek V4 定价中的命中

以下面 V4 低谷时段输入价为例(元/百万 tokens),差距一目了然:

项目缓存命中缓存未命中差距
v4-flash 输入 0.05 1.5 ≈ 30×
v4-pro 输入 0.15 4.5 ≈ 30×

也就是说:只要能频繁命中缓存,输入部分的成本可以压到约 1/30。 这就是为什么"保持 Prompt 前缀稳定"在 agent 场景里能省很多钱。

04在 dsh 里的意义

  • 天然有利:dsh 每次请求都带着很长的系统提示 + 历史前缀,只要开头稳定不变,就能反复命中缓存,省很多钱。
  • 切模型会断缓存:切换模型 / provider 会换一个缓存域——来回切 Flash / Pro 会中断缓存复用(这也是为什么建议"大块时间用同一个模型")。
  • 会破坏前缀的东西:提示词开头插入会变的信息(时间、随机 id、频繁变化的内容)会破坏前缀复用,命中率下降、成本上升。

05提高命中率的技巧

  1. 稳定不变的内容放在 Prompt 最前面(系统提示、固定说明),把会变的内容往后放。
  2. 不要在提示词开头放时间戳、随机 id 这类每次都在变的信息。
  3. 长时间做同一件事时尽量保持同一个模型,别频繁切换。
  4. agent 长任务里保持对话前缀连续,比每次新开会话更容易命中。