一、一个贯穿计算机系统的通用思想如果你仔细观察计算机系统中的各种优化手段会发现一个反复出现的模式把操作中「不可复用的大块」拆成粒度合适的「可复用小块」将频繁使用的小块缓存起来供后续请求命中复用。这个模式出现在太多看似不相干的领域中大文件分片存储 → 内容寻址分片去重相同内容的片只存一份AI推理中的前缀缓存 → 跨请求复用公共Prompt的KV CacheGit版本控制 → 内容寻址存储相同内容的Blob只存一份Docker镜像 → 分层复用基础层被多个容器共享CPU缓存 → Cache Line按块加载利用空间局部性CDN加速 → 静态资源分片缓存到边缘节点它们背后是同一个思想拆分 缓存 复用。二、两个典型案例案例一大文件存储中的分片去重传统的文件存储方式中每个文件作为一个完整对象保存。如果系统中存在大量相似或重复的文件例如多个用户上传同一份安装包、多份文档包含相同的图片素材每个文件都会完整占用一份存储空间造成巨大的浪费。分片去重存储的思路是拆分将文件按固定大小如4MB切成若干个分片Chunk指纹计算对每个分片计算哈希值如SHA-256作为该分片的唯一标识去重存储系统中相同哈希值的分片只存一份不同文件通过分片引用列表来组合按需还原读取文件时根据引用列表从存储中取出各个分片组装成完整文件举个例子假设有两份PDF文档前80%的内容完全相同包含相同的封面、目录、引言只有后20%不同。传统存储需要存两份完整的100MB文件总共200MB。而分片去重存储只需存一份80MB的公共分片再加上两份20MB的差异化分片总共120MB节省了40%的存储空间。案例二AI推理中的前缀缓存大模型推理分为两个阶段Prefill预填充读取完整Prompt并行计算所有token的Key/Value存入KV CacheDecode生成基于KV Cache逐个token自回归生成回答在实际应用中大量请求携带相同的System Prompt、工具定义或Few-shot示例。如果每次都对这部分重复做Prefill计算会造成巨大的算力浪费。前缀缓存的思路是将Prompt按固定长度切分为Block每个Block计算Hash建立哈希链新请求到来时按前缀匹配已有的KV Block命中的Block直接复用只对未命中部分做Prefill计算这与分片存储异曲同工把不可复用的大块完整Prompt拆成可复用的小块KV Block将热小块缓存起来供后续请求复用。三、为什么这个模式如此强大缓存之所以成为性价比最高的优化手段核心原因是计算机系统中普遍存在的80/20法则帕累托分布80%的请求访问20%的热点数据电商平台中20%的商品承担80%的下单量软件系统中20%的代码路径消耗80%的CPU时间LLM推理中绝大多数请求共享同一份System Prompt这种不均匀性意味着只要针对那20%的热数据进行缓存就能覆盖80%的访问量。剩下的80%冷数据虽然量大但访问频率低放在慢速介质中也不会造成明显瓶颈。于是系统的设计原则变得清晰数据类型访问频率存放位置介质特性热数据20%高快速介质内存/显存快、贵冷数据80%低慢速介质磁盘/网络慢、便宜缓存做的就是识别热小块 → 放在快的地方 → 按需命中复用。四、更深一层的启发从这个思想出发我们可以提炼出几条通用的系统设计原则1. 拆分是复用的前提不拆分就无法精细化管理。大块数据要么全命中要么全错过缺乏灵活性。拆分后可以做到部分命中、部分复用。2. 粒度决定效率上限分得太粗复用率低分得太细管理开销大。找到合适的粒度是缓存设计的关键。3. 热点是会变化的今天的System Prompt明天可能换掉今天的爆款商品下周可能无人问津。缓存需要配合淘汰策略LRU、TTL等动态适应。4. 不均匀性是朋友不是敌人很多人在面对性能问题时本能地想要平均分摊但真正高效的架构恰恰是利用不均匀性——把资源倾斜给那20%的热点换取80%的效率提升。五、写在最后回到最初的那个观察大文件分片存储 和 AI前缀缓存本质上是同一个思想。它们教会我们的不止是两个具体技术而是一种思维方式遇到性能问题时第一反应不是加机器而是问自己三个问题哪些操作是高耗时的定位瓶颈这些操作中有没有可复用的部分识别热点如何拆分才能让复用粒度最优设计缓存这个思维习惯比任何一个具体技术的价值都要长久。本文源自日常学习中的一次顿悟记录于2026年6月16日。
缓存之道:拆分、复用与80/20法则
发布时间:2026/6/18 16:29:20
一、一个贯穿计算机系统的通用思想如果你仔细观察计算机系统中的各种优化手段会发现一个反复出现的模式把操作中「不可复用的大块」拆成粒度合适的「可复用小块」将频繁使用的小块缓存起来供后续请求命中复用。这个模式出现在太多看似不相干的领域中大文件分片存储 → 内容寻址分片去重相同内容的片只存一份AI推理中的前缀缓存 → 跨请求复用公共Prompt的KV CacheGit版本控制 → 内容寻址存储相同内容的Blob只存一份Docker镜像 → 分层复用基础层被多个容器共享CPU缓存 → Cache Line按块加载利用空间局部性CDN加速 → 静态资源分片缓存到边缘节点它们背后是同一个思想拆分 缓存 复用。二、两个典型案例案例一大文件存储中的分片去重传统的文件存储方式中每个文件作为一个完整对象保存。如果系统中存在大量相似或重复的文件例如多个用户上传同一份安装包、多份文档包含相同的图片素材每个文件都会完整占用一份存储空间造成巨大的浪费。分片去重存储的思路是拆分将文件按固定大小如4MB切成若干个分片Chunk指纹计算对每个分片计算哈希值如SHA-256作为该分片的唯一标识去重存储系统中相同哈希值的分片只存一份不同文件通过分片引用列表来组合按需还原读取文件时根据引用列表从存储中取出各个分片组装成完整文件举个例子假设有两份PDF文档前80%的内容完全相同包含相同的封面、目录、引言只有后20%不同。传统存储需要存两份完整的100MB文件总共200MB。而分片去重存储只需存一份80MB的公共分片再加上两份20MB的差异化分片总共120MB节省了40%的存储空间。案例二AI推理中的前缀缓存大模型推理分为两个阶段Prefill预填充读取完整Prompt并行计算所有token的Key/Value存入KV CacheDecode生成基于KV Cache逐个token自回归生成回答在实际应用中大量请求携带相同的System Prompt、工具定义或Few-shot示例。如果每次都对这部分重复做Prefill计算会造成巨大的算力浪费。前缀缓存的思路是将Prompt按固定长度切分为Block每个Block计算Hash建立哈希链新请求到来时按前缀匹配已有的KV Block命中的Block直接复用只对未命中部分做Prefill计算这与分片存储异曲同工把不可复用的大块完整Prompt拆成可复用的小块KV Block将热小块缓存起来供后续请求复用。三、为什么这个模式如此强大缓存之所以成为性价比最高的优化手段核心原因是计算机系统中普遍存在的80/20法则帕累托分布80%的请求访问20%的热点数据电商平台中20%的商品承担80%的下单量软件系统中20%的代码路径消耗80%的CPU时间LLM推理中绝大多数请求共享同一份System Prompt这种不均匀性意味着只要针对那20%的热数据进行缓存就能覆盖80%的访问量。剩下的80%冷数据虽然量大但访问频率低放在慢速介质中也不会造成明显瓶颈。于是系统的设计原则变得清晰数据类型访问频率存放位置介质特性热数据20%高快速介质内存/显存快、贵冷数据80%低慢速介质磁盘/网络慢、便宜缓存做的就是识别热小块 → 放在快的地方 → 按需命中复用。四、更深一层的启发从这个思想出发我们可以提炼出几条通用的系统设计原则1. 拆分是复用的前提不拆分就无法精细化管理。大块数据要么全命中要么全错过缺乏灵活性。拆分后可以做到部分命中、部分复用。2. 粒度决定效率上限分得太粗复用率低分得太细管理开销大。找到合适的粒度是缓存设计的关键。3. 热点是会变化的今天的System Prompt明天可能换掉今天的爆款商品下周可能无人问津。缓存需要配合淘汰策略LRU、TTL等动态适应。4. 不均匀性是朋友不是敌人很多人在面对性能问题时本能地想要平均分摊但真正高效的架构恰恰是利用不均匀性——把资源倾斜给那20%的热点换取80%的效率提升。五、写在最后回到最初的那个观察大文件分片存储 和 AI前缀缓存本质上是同一个思想。它们教会我们的不止是两个具体技术而是一种思维方式遇到性能问题时第一反应不是加机器而是问自己三个问题哪些操作是高耗时的定位瓶颈这些操作中有没有可复用的部分识别热点如何拆分才能让复用粒度最优设计缓存这个思维习惯比任何一个具体技术的价值都要长久。本文源自日常学习中的一次顿悟记录于2026年6月16日。