~/VibeHandbook
$39

09 · 06

缓存

一个**缓存(cache)**存储一个昂贵问题的答案,这样你就不必再问一遍。如果你的主页为每一个访客都运行同一个繁重的查询,那就把结果在 Redis 里缓存 60 秒,瞬间提供给用户。

缓存是一种性能优化,不是事实来源。经典的初学者陷阱是忘记缓存失效(cache invalidation)——缓存的副本变陈旧了,用户看到的是旧数据。经验法则:只有当你测量出一个真实的瓶颈时才缓存,并且始终对缓存值何时过期或刷新有一条清晰的规则。

有两种干净的策略,把它们搞混会引发大多数缓存 bug。**基于时间的过期(TTL)**说"这个值在 60 秒内有效,之后就扔掉"——简单,而且在略微陈旧的数据无害时(一个浏览计数、一个主页信息流)很合适。基于事件的失效说"在底层数据改变的那一刻就删除缓存值"——正确,但你必须在每一条写入路径上都记得这么做,而那恰恰是人们出岔子的地方。拿不准时,优先用短 TTL:一个最多陈旧一分钟的值,比一个因为你忘了一次失效而永远陈旧的值,是更小的 bug。

想离线阅读?

获取 PDF + EPUB + 可下载的提示词库 + 版本更新。

$ 获取 PDF — $39