缓存可以提升性能是人尽皆知的,但是能把它用好的取之可数。前段时间呢,我刚刚优化过一个查询接口的性能,在 qps 从五百提升到两千的情况下呢,接口的二七从三十毫秒降到了五毫秒左右。这个接口呢,主要是用来查询用户是否命中黑名单的, 如果把黑名单的数据直接放到缓存当中呢,是可以提升效率,但问题是通常情况下黑名单的数据量比较少,而正常的用户量呢却很多,这就会导致缓存的命中率是极低的。我统计了一下我们业务的黑名单的命中率,发现只有五千万分之十几, 所以如果做这种缓存的话,其实根本起不到提升查询效率的作用。那怎么办呢?经过和业务的沟通呢,我发现了一些业务上的特点,第一个呢,就是一般在下单的过程中,会反复查询一个用户是否命中黑名单,可能加购物车查一次,支付查一次,用券的时候再查一次,而且可能呢,每个子订单都会查一次。还有呢就是业务上呢,是可以接受那种费 分钟级别的黑名单的数据的延迟的。那么在这些前提的情况下呢,优化的方案就很简单了,那就是把用户的 id 当做 k, 是否命中黑名单的这个结果当做歪柳放到 redis 当中,这就是所谓的结果。缓存对于相同的用户请求呢,将计算后的结果缓存起来, 可以减少重复的数据查询和计算的过程,使用高效的内存查询呢,来代替耗时的 cpu 计算和磁盘的 l。 最终上线之后呢,发现缓存的命中率呢高达百分之八十多,大大提升了查询的性能。所以后面大家在做技术优化的时候呢,可以选择这种结果缓存的方式。
粉丝14.1万获赞172.0万
![教你最大化Claude Code缓存命中来节省token 之前两期讲了Prompt Cache怎么省token、breakpoint怎么命中。这期反过来讲:什么动作会让cache直接报废,怎么用才能最大化命中率。
先给一个心法。
把每个请求想成一根从左到右的链条:tools → system → CLAUDE.md/skills → messages。改哪一段都会让cache失效,区别只在影响范围:改左边的从这段往右全部跟着废,改右边的只伤自己那一段。所以越靠左越要锁死。官方三级失效层级表(tools/system/messages)就是这个原则的精简版(CLAUDE.md严格来说在messages层,单独抽出来是因为它最常被改)。
4个日常杀手,按它们出现在链条上的位置从左到右排:
1. 切 /model —— 最左。每个模型独立的KV cache,跨模型完全隔离。Opus跑了10万token再切Sonnet,反而比继续用Opus更贵。非要切?正解是用subagent隔出去跑(Claude Code的Explore agent就是这么干,用的Haiku)
2. 装新MCP —— tools层。装一个新MCP,tools数组就多几个工具,链条最左边一动,下面system+messages连锁失效(三层全废)。但MCP只在Claude Code启动时读一次,session内装新MCP不影响当前session——真正的杀手是 /resume 或 /reload-plugins,触发重读后tools数组重组,之前cache全丢
3. 改CLAUDE.md 或装新 skill —— messages层。CLAUDE.md 是 user 消息(052已实证),skill 列表也注入在 messages[0]——都只在启动时读一次:改完文件或装完 skill 别 /resume,否则 messages 整段重建
4. idle超过5分钟 —— TTL过期,服务器直接删条目
每个杀手都给出怎么避免:MCP/hook 启动前一次配好;长任务前 `export ENABLE_PROMPT_CACHING_1H=1` 把 TTL 延到 1 小时。
#claude #AI工具 #张司机 #个人开发者 #命令行](https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/4c2093cebb91654dd10cf078b747d4ba~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2095563600&x-signature=I7%2B3hnS2yQT03wSYQwWJpugYhZw%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=20260531135145890F07DC32EE04B2552A)
前面两集视频我们详细介绍了 prompt cache 的 工作原理,那我们今天讲点实用的干货,你每天用 curl code 敲代码, 你知道到底有哪些动作会影响缓存的利用率吗?要怎样才能最大化地帮你提高缓存的命中来节省 token 呢?我们把每一个请求发送的上下文扒开来,最左边是工具定义 tools, 然后是系统提示词 system, 然后是 cloud 点 m d skills 列表这些注的上下文最右边是 messages 对 话的历史。改哪一段都会让 catch 失效,区别只是在影响范围改。如果左边的,那么从左到右全部都跟着废掉了,改右边那么只伤自己那一段,所以越靠左越要锁死。 今天讲了四个缓存杀手,就按他这么出现的位置从左往右讲,第一名最狠的是切模型,因为缓存是按模型隔离的,为什么呢?因为缓存存的不是文字本身,而是 transformer 架构里 attention 层计算出来的 kb cache, 也就是每一层的 key 和 value 的 张量。 opus 和 sonnet 模型架构不一样,所以权重也不一样。同样提示词算出来的 k v 两个模型完全不同,所以 sonnet 没法附用 opus 的 k v cash。 跟 opus 聊了十万 token, 再切回 sonnet, sonnet 这边 cash 完全是空的,所有的 token 都要重新算 k v cash, 所以重新写入账单,瞬间从零点一倍基础价飙回一点二五倍。原来便宜十多倍的 token 要重新当全价算,那如果你有情况必须要切模型怎么办?那么正确的做法是用 sub agent 的 格力出去主对话,继续用 opus, 然后科微 cash 就 可以一动不动开一个 sub agent 跑另外一个模型,让他把活干完,输出一段交接消息给主对话 cologold 自己就这么干的,像 explore tool, web search tool agent 就是 用的海库。第二个大杀器就是装新的 m c p, 新装的 m c p 会添加到拓子数组的末尾, 哈希一变,下面 system 和 messages 全部跟着失效。但是 m c p 只在 clock code 启动时读一次,启动后整个 session 都是用启动时读的版本,所以当前的这个 session 是 不受影响的。真正的杀手是 resume 和 reload 的 plugging, 一旦触发重载,那么 call code 会重新组装托斯数据库。新的托斯和之前的 cash 对 不上,那么之前积累的 cash 就 全部白付了。所以开始一个任务之前,先把 m c p 一 次性都装好,不要把等活干了一半发现少了一工具再装,这时候前面积累的缓存就全没用了。 第三个杀手是改 cloud md 或者装新的 skills, 两个都是 message 层的注入上下文。 cloud md 本身就是一条 user message 排在 message 组里面的 block 三里面,然后 skills 列表是在 block 二, 跟 m c p 一 样,他们也只是在 cloud 启动时读一次,然后中途改 cloud md 或者装新的 skills。 当前 session 是 看不到的,真正的杀手还是在 slash resume 的 时候装完 skill, 你 想 resume 回来,那么 cloud code 会重新组装这个 message。 宿主 内容变了,跟之前的 cash 对 不上,那么 matches 整段都要重建。所以和 m c p 那 条一样,一开始一个任务先要想好需要哪些 skills, 或者当前的这个 cloud md 还有什么对于当前任务很重要的上下文没有添加一次性,我们把它准备好,不要在任务中途去修改这些东西对缓存的伤害很大。 第四个缓存杀手就是活干到一半去喝杯咖啡再回来。官方默认 t t l 过期时间是五分钟,超过五分钟没有新请求,那么 cash 就 直接清空了,并不是哈西不对,是福气。主动删条目回来,即便发一样的请求,那么所有的上下文都必须重新计算。 有时候 coco 的 返回结果,我们检查成果,然后想下一步都不止五分钟了,而且 coco 自己思考的时间有时候都不止五分钟。所以长任务如果想保住 cash, 我 个人无脑建议使用一小时的 ttl, 只需要在任务开始之前先 export enable prompt cashing 一 小时等于一, 那么启动这个环境变量就把 ttl 延长到一小时了。写入会比五分钟稍微贵一点点,五分钟是一点二五倍,然后一小时是两倍。但是复杂任务里,一小时的缓存绝对比五分钟缓存失效更划算。所以我们总结一下四个缓存杀手,按照伤害值从大到小排序, 第一个是中途切模型,那么第二个呢?是中途装新的 m c p, 三是改 cloud md 或者装新的 skills, 四是活干到一半中途中断超过五分钟。 它们的共同原则就是开启一个任务之前一次性把东西都配好。那么 session 里就不要用 slash resume 了。复杂的任务一定记得开一小时的 ttl。

明明都没用几个 app, 手机内存就频繁见红,五百一十二 g 才用半年就提示内存不足了,那些只有一百二十八 g 的 手机都是怎么做到用四五年不卡?话说你们的手机中最占用内存的 app 是 哪一个?今天呢,就告诉你们一个 数码博主的必备经,让你在不删照片、游戏啊,学习资料的情况下,至少榨出你手机三十个 g 的 内存。操作一,微信深度清缓存 打开微信,我设置通用微信存储空间,可以删除一些没用的聊天记录,再点击缓存一键清理。这里记住啊,重点清理朋友圈缓存、视频号缓存和小程序残留,尤其是那些经常刷视频号的兄弟啊,这一步至少能清出你手机几个 g 的 内存,亲测有效!操作二, 相册批量清理平常啊,在我们相册里面,那些个相似照片重复的截图以及过期的视频啊,全部都是内存杀手。 打开相册,找到相似照片,截图分类,批量删除重复出现的,只留一张清晰的就可以了,记得把过期的短视频临时拍的废片呢,一次清空。另外啊,记得关闭这个相册的自动缓存功能,避免 app 自动保存一些没用的图片。 这一步下来啊,你手机至少又能获得几个 g 的 空间。操作三, app 缓存加溶于清理你日常高频使用的 app, 像抖音啦,手机浏览器啦,缓存堆多了,那比你的游戏都要占内存。只要你打开手机,设置 应用管理,找到这些个 app, 选择清理缓存。这里要记住啊,千万别清理数据啊,是清理缓存。另外啊,顺便把这个 app 自动下载安装包呢也都删掉,这一步瞬间又能给你释放六到十个 g 的 流量。操作四,系统隐藏垃圾清理这一步是有很多人都忽略的,如果是安卓手机,你就打开文件管理,找到安卓 date 文件夹,删除里面没有用的 app 残留。 如果是苹果手机的话,打开设置通用 iphone 存储空间,开启卸载未使用的 app, 选择保留数据,然后再清理这个浏览器缓存邮件、附件,这些隐藏垃圾就能一次性解决干净了。

ai 智能体成本最大的因素是什么?很多人会说是 token 的 长度越长,那么成本它肯定是越高。但是 cloud code 他 们的开发者发了这样一篇文章,他说的是提示词缓存命中就是一切,也就是 k v catch 的 缓存命中率, k v catch 的 缓存命中和不命中它的成本会相差到十倍以上。首先说一下 k v catch, 它本质就是你 之前上一轮对话,他已经计算好的一些内容,他会保存下来,那么你下一轮对话最好只是给他新增,比如说你新增这几句话,然后前面所有的上下文是完全没动的,那么他只需要计算你发的这几句话的这种计算量就够了,前面的他都是已经保存下来了,所以说这样的成本会非常的低。 但是如果你的上下文里面塞了现在的时间,那么你的上下文就已经断掉了,你在哪里 改变的,那么他后面的全部都要重新进行计算,所以说他的成本会非常的高。 ok, 这篇文章也给我们了一些怎么样提高提示词缓存命中率的一些操作经验。 首先他们就列出来了他这种提示词他大概的一个排列顺序,那么你改的时候一定就不要去改前面的,那么你新增的一些消息就应该放在最后面。 他就说了一下,首先是这种静态的系统提示词,然后是这个 cloud 的 md 文档,然后绘画上下文,然后才是这个对话消息,你一定要把你应用的上下文,比如说足够长了之后,你一定要打印出来,看一下你的应用上下文到底是怎么样排序的, 一定要把它顺序排好,最好对话的消息就是放在最后不断地加载,不断地加载的,然后他就说了一下, 这个消息一定是放在最后进行更新的,自动进行更新去进行添加,要放在最后的第二个点,就是不要在中途去换这个模型,哪怕你之前使用的是 opus, 但是如果你把它换成嗨酷,虽然这个嗨酷比 opus 的 成本要降了,应该是在五分之一, 但是实际上你换成这个嗨酷,它会比你之前再去对话其实是更贵的,因为它需要重建这个嗨酷的提示词缓存。所以说如果你需要换模型,那么你应该是起用一个子智能体,而不是去直接换模型。 还有就是千万不要在绘画的途中去添加或者移除工具,或者去动态的改变工具。这也就是我们之前出现过很大的问题,因为我们的应用它有非常多的 m c p, 这个 m c p 可能就占到了几十个甚至二十到三十 k 的 这种上下文缓存,我就想把它压缩,其实我不动它调用它的成本反而是更低的,这也是我们的一些坑点。 然后就是规划的模式,因为 cloud code 它是有一个规划的模式的,它是就不用具体去操作规划的模式,它是完全不会动这些工具提示词的,而是会跟它加一句这个提示词描述做约束,而不是去换它的体这些工具,因为这些工具如果你去换它,你会破坏掉它的缓存。 然后就是工具搜索,就是 m c p, 也就是我们刚才遇到的那个问题,他说了一下,他们不会去移除这些 m c p 工具,并且也并不会进行加载,而是做了一个 to 搜索工具,去搜索具体的这些 m c p, 而这些 m c p 的 提示词, 他会去把它整理成一个短的前缀,直接放在他的出示文档里面。然后我们要去做压缩,因为很多时候我们要做压缩,它上下文快达到上限的时候,你就必须要进行压缩。他也说了一下,他们之前可能想的就直接把这种对话直接进行压缩,这样的话少掉一些工具,少掉一些内容,这些可能会效果更好, 但是他们发现这样其实是不 ok 的, 他们用了一个最简单的方式,就是直接再发了一个提示词发给 cloud code, 让 cloud code 自己去执行这个压缩的命令,这就是他们的一个解决方案,他会把后面的这个压缩消息会固定一个消息去发给这个 cloud code, 然后总结了一下,一共有五个。首先就是提示词的缓存,就是前缀的匹配,就是你前缀永远不要换,用消息去替代这个系统提示的,更改你的系统提示词千万不要动。 然后不要在中途特别是你对话了一百 k 的 上下文的时候,你去换模型,这样的性价比是极低的,哪怕你换到一个最便宜的模型,都没有他那个缓存命中的成本低。然后他们要监控这个缓存的一个命中率, 要一直监控这个缓存的命中率,如果有问题他们就要马上进行修改,因为像梅纳斯或者 cloud code 的, 他们如果没有考虑这个缓存命中的话,他两百美金一个月,不要说两百美金,两千美金他们就算是自己模型提供商,他们的成本都打不住, 所以说缓存命中是非常重要的。还有就是这种节点尽量还是使用这种消息去进行压缩的方式,而不要去动他前面的上下文。 所以说总结了一个点,你想要成本低,那么你前面的东西最好什么都不要修改,包括你的提示词,包括你工具返回的内容,前面的东西全部都不要再做修改,那么你这个应用才是一个成熟的应用,要不然你的成本肯定是打不住的。

what's up? 各位,今天呢,我邀请了一名经验丰富的教练来教他们,这名教练呢,也有多年执教 nca 的 履历。今天文杰也归队了, let's go! 主要今天还是练投篮,因为国豪和文杰两个人的投篮都需要加强 脚趾脚,脚趾对准脚趾对准篮筐啊。 just move it you don't really don't catch shoot it come on up good here you go how to that good good。 对, 一条直线多余动作剪掉 good。 感觉动作确实变好了一些。是不是 这个教练就是从最基础的这种投篮方式来一点一点给他们赶,我觉得还挺好的。 这个投篮是好的,但没有进。没关系,你记住你进球的这个感觉,就每次动作 直上直下就跳啊。这个教练提出国豪的一个问题,我觉得还是挺对的,他的意思是国豪每次投篮呢,都是左右跳,没有保持平衡,都不是直上直下的跳,所以说投篮肯定不稳定。 toes finishing on our toes and j。 保持平衡啊 j。 现在看来呢,这个教练的训练项目就是进阶的投篮训练,就各种脚步之后的投篮, 增加投篮难度。但不管怎么样,做完动作呢,就要保持身体的平衡和投篮的一致性,两只腿都可以当头并脚,两只腿都可以动。对,好, yep, yep under control, stay with it。 好, 别撇! stay with it。 保持好动作。 get those feet center in that slot here it comes keep pushing yourself down。 还有两分二十秒啊,二十秒,二十秒 都累了。确实练挺累的,累了就变了。 对啊对啊, stay with it stay in with it hahaha good! hey, that's the best one you've done stick it that's one hot。 最后一个,最后一个,教练也累了, 你们已经做的越来越好了。 that's why you come into the gym? 为什么我们来啊?训练馆训练。 and you learn something new have you seen any things before that i showed you。 之前今天他教的东西你今天有学过吗? 拿到球前画圈啊。你改掉这个坏习惯。现在开始减脂了,减脂了。真的真的确实脸大了一圈,好像胖了一点点 哈哈哈。要改变投篮训练,投篮是要花很大功夫很多时间的。那这就是 chinese。 训练结束。训练练结束。结束。结束。

大家好,我是直北师,今天来聊一个很多人好奇的问题,到底什么是缓存命中?今天我以 deepsea 举例,你有没有发现和 deepsea 聊天的时候,它的响应速度特别快,你刚发完消息,它立马就能回复你,这是怎么做到的呢?其实当你和 ai 聊天的时候, 每发一条消息, ai 都要想一遍之前说过的话,假设你在网上买了快递,快递员要把包裹送到你家,如果没有快递柜,快递员每次都得去仓库找你的包裹,再送到你家门口。但如果有快递柜呢? 快递员先把包裹放进快递柜,你直接去取就行了,是不快多了。 ai 的 缓存也是这个道理, deepsea 会把之前对话的记忆 放在一个叫做缓存的地方,当你下次发消息的时候, ai 不 需要重新想一遍之前的话,直接从缓存里读取就行。从技术层面来说,这叫做 k v cache。 在 transformer 架构中,模型会为每个 token 生成 key 和 value 向量,用于注意力计算。 模型会将已计算的 k v 向量缓存起来,生成新 token 时直接复用,避免重复计算,这就是缓存命中的秘密。

目前我们对于托管业务还有一个很关注的点在于缓存上,我们自己做一个测算,以 coding 场景常见的百分之七十五的缓存命中率来算,一个模型如果给到你两折,但是不让你享受缓存命中的价格, 会和一个模型给到你五折,但是享受缓存命中的价格的总体头跟开销是一致的,但是很多人会被这个两折和五折的巨大差价所影响,但这个也会随着使用人群慢慢的熟悉和精进会有一个提升。目前呢,我们平台上对于国内模型基本都支持缓存命中价格, 也是因为我们都是从正规的云厂商那边接过来的渠道,只是我们有我们自己的渠道政策在 口的模型这边可能相对会要麻烦一些,是目前绝大部分在国内提供的进口模型服务,大部分都是基于耗池,那么耗池的命中率的数学概率会是耗池总数分之一,那么对于两三百个耗的耗池来说,你的缓冲命中概率也就是相当的不理想。我们目前正在拓展向 cloud enterprise 渠道的那些 api, 这样子会让我们的缓存命中率真正的有意义,也希望这样子的改变能够帮助更多的人,更多的企业享受到 ai 对 于自身工作的强大帮助。说一个特别老套的话,就是 ai 真的 会决定你所干这个事的效率, 然后在目前这样一个快速发展的社会里面,效率真的是很多行业的命脉吧。也希望大家有头肯方面的需求,有头肯方面的问题,都可以跟我们多聊聊。

c 盘爆满,游戏经常卡顿,这可能是由于 n 卡着色器缓存太多导致。从前需要我们前往 c 盘文件中手动清理比较麻烦,很多小白不会操作,现在只需要一键即可清理成功了。这是英伟达 app 的 最新功能,不废话,直接教大家使用。首先我们需要保证 app 版本是如图即 以上,不然就会没有清理缓存功能。如果没有 app 或版本过低,则我们需要使用奇游搜索英伟达进去,在右上角拿完资格后一键优化,点右下角更多 get force 驱动程序, 在这里即可安装或更新最新 app。 接着我们需要保证驱动程序,这里显卡驱动版本为五百九十六点四九级以上,如果不是则在右侧这里更新一下。前面所有都完成后,我们点图形全局设置下拉,点入着色器缓存, 再点右上角的三个点点按钮,选择清除缓存即可一键清理了。根据大家 n 卡缓存的不同,能给 c 盘瘦身最多甚至五十 g 左右,并且清除缓存后,游戏的卡顿问题也会得到一定的缓解。以上就是本期视频的全部内容,大家学会了就赶紧去试试吧!

缓存命中率呢,从架构角度来说,还是一个比较重要的概念,尤其是在互联网公司啊,经常会跟 qbs、 tbs 这些指标一起来衡量系统的性能。 缓存的税号信呢,就不多说了啊,即使你的代码写的再烂,有了缓存呢,也能够挡一挡,毕竟缓存要高于数据库好几个数量级,有了缓存呢,就要用好它啊,那么就有了缓存命中率这个概念,它是衡量系统性能的一个重要指标。 请求的数据在缓存中找到了,命中了,那么就可以直接通过缓存来获取想要的数据。命不中,那么就需要去查我们的数据库了, 命中缓存的请求占总请求的比率啊,就是所谓的缓存命中率。通常来说呢,命中率越高,应用的性能 就越好,简单来说就是响应时间变短了啊,吞吐量变高了, qbs 提高了,自然并发量也就上去了。那怎么提高混合命中率呢?有些同学可能会说啊,我把库里的数据都往混合上同步,对吧,这样命中率不就提高了吗? 啊,这种呢,肯定是不现实的啊,一来呢,系统不可能只有几十个 g 的数据,二来呢,这么多的数据一次性呢,也很难保证,对吧,所以我们要挑一部分访问量比较高的数据,也就是所谓的热点数据来刷到我们缓存里面, 比如说热门的店铺数据啊,对吧,社交系统里面的一些大规的数据啊,那么这些数据呢,是要往缓存里面去同步的,那怎么知道这些是热 k 呢,对吧?啊,可以通过一些系统买点啊,或者通过这个 数据监测呀,或者通过一些开源的组件,比如说像这个啊,京东 hotkey, 对吧?对于这些热点数据呢,是可以提前刷到广告里面的啊,也可以通过访问量来给 可以续命,比如说每增加一个访问,我们就延长一定的这个过期时间,比如说十分钟,对吧?这样的话呢,热点数据呢,就会长期的停留在缓存里面,那么命中率呢,也就自然就高了。 另外呢,还有一个提升命中率的方式呢,就是使用多计缓存,请优先过来啊,我们先在本地查看,如果呢在精装缓存里面有就直接返回,如果没有呢就再去 啊 release 里面去看,这样一来呢能够提高缓存的命中率,二来呢也能够减少对 release 的访问,保护了远端缓存。另外还有这个缓存的力度啊,要注意啊 呢要往小的去设,不要笼统的放在一个集合里面啊,比如说像这个热门商品,对吧?不是所有的都放在一个集合里,而是使用啊商品的 id 来作为 k 只缓存某一个商品的数据,对吧? 这样呢,即使有商品更新了,也只是更新了或者移除了当前的缓存,不会影响到其他的数据。好了,本期的视频呢就是谢了,如果您对本期的内容呢,有任何疑问,欢迎大家在评论区给我留言,谢谢大家。

把球按到地上,加速,急停,加速,急停。哎,错了,重心太高太慢。你现在突破的时候重心太高,就会导致你的速度太慢,我们要像跑步一样加速急停,这样才能快。我们把球按在地上, 这个时候你的重心会压下来,像是跑步一样,然后把球往前推,保持低重心出手,哎,加速走对了,好球。 把上半身倾斜,在快倒的时候迈步,助手跳头,上半身倾斜,再快倒,哎,对了,好球。