联邦实体解析性能优化与引用计数
在Apollo Federation中优化跨子图实体解析,减少冗余查询并利用引用计数缓存。 · 难度:入门 · +10XP
联邦实体解析性能优化与引用计数
当联邦图中一个实体被多个字段引用时,每次解析都会触发跨子图请求。本课程引入__resolveReference的批量处理机制,并使用引用计数(reference counting)避免重复解析。你将学习如何为实体添加@computed指令标记计算字段,以及编写一个自定义ReferenceCache,在单个请求周期内缓存已解析的实体对象。同时探讨通过@provides预加载字段以减少网络往返,最终实现查询响应时间下降50%的优化策略。
// 实体引用解析器中的缓存
const cache = new Map();
const resolvers = {
Product: {
__resolveReference(ref, context, info) {
const key = ${ref.__typename}:${ref.id};
if (cache.has(key)) return cache.get(key);
const product = fetchProductById(ref.id);
cache.set(key, product);
return product;
}
}
};