先这样答
要缓存。相同参数的工具调用结果可以复用。天气、汇率这类工具适合缓存。缓存能减少重复调用,也能让相同请求直接返回已有结果。
缓存键至少包含工具名、规范化参数哈希和数据版本。参数必须先规范化,再计算哈希。这样可以避免参数顺序或表示方式不同,导致同一个请求生成不同的键。数据版本也要进入缓存键,防止不同版本的数据混用。
TTL 要按数据特性设置。股票数据可以使用秒级 TTL。文档数据可以在文档更新事件发生时主动失效。权限不能只放在缓存外面考虑。缓存键必须包含权限维度,或者命中缓存后进行二次鉴权,防止用户读到无权访问的缓存。工具执行写操作后,要主动失效相关缓存,避免继续返回旧结果。
面试官会怎么追问
-
「为什么缓存键里还要放数据版本?」 数据版本能区分同一工具和同一组参数对应的不同数据状态。版本变化后,旧缓存不会和新数据混用。
-
「权限信息放进缓存键就够了吗?」 不一定。可以把权限维度放进缓存键,也可以在命中缓存后做二次鉴权。两种方式都要保证缓存命中不会绕过权限校验。
-
「写操作完成后,缓存应该怎么处理?」 写操作后主动失效相关缓存。失效范围要覆盖受这次写操作影响的结果,避免后续请求继续拿到旧数据。文档也可以在更新事件发生时触发失效。
回答的坑
-
只说“缓存能提高性能”,却没有说明缓存键、TTL、权限和更新失效。
-
只把用户参数放进缓存键,却忽略权限维度或命中后的二次鉴权。
同系列的题
这家公司的面经实录
相关深度笔记
—— 本题完 ——