Apollo Client通过InMemoryCache实现高效缓存,需配置keyFields确保缓存键唯一,利用update回调或writeQuery手动更新,支持自定义缓存键处理无ID数据,结合evict、resetStore等方法合理清理缓存。

GraphQL 配合 Apollo Client 在现代前端开发中被广泛使用,其中缓存管理是提升性能和用户体验的关键环节。合理利用 Apollo Client 的缓存机制,可以减少重复请求、加快数据读取速度,并实现更流畅的交互体验。
Apollo Client 使用 InMemoryCache 作为默认缓存策略,它会自动将查询结果以对象形式存储,键由类型和 id 字段组合生成(即通过 __typename 和 id 构建缓存键)。
这意味着如果两个查询返回同一实体(例如用户信息),只要字段一致,后续查询可以直接从缓存中读取,无需发起网络请求。
要确保缓存生效,请注意以下几点:
立即学习“Java免费学习笔记(深入)”;
当执行修改操作(如添加、删除、更新)时,服务器数据已变,但缓存不会自动同步。这时需要手动干预缓存。
常用方式包括:
示例:新增评论后更新文章评论列表
家政服务平台系统包含家用电器安装清洗、搬家、家电维修、管道疏通、月嫂保姆、育儿陪护、上门开锁等多种服务项目,用户可以直接通过家政小程序咨询,在线预约服务类型,同时还设置有知识科普,给用户科普一些清洁保养小技巧,让用户能够足不出户就可以直接预约服务,方便又快捷。本项目使用微信小程序平台进行开发。使用腾讯专门的小程序云开发技术,云资源包含云函数,数据库,带宽,存储空间,定时器等,资源配额价格低廉,无需
0
useMutation(ADD_COMMENT, {
update(cache, { data: { addComment } }) {
const query = GET_POST;
const variables = { id: '123' };
const data = cache.readQuery({ query, variables });
if (data) {
cache.writeQuery({
query,
variables,
data: {
post: {
...data.post,
comments: [...data.post.comments, addComment]
}
}
});
}
}
});
某些对象可能没有全局唯一的 id,比如分页列表、临时数据等。此时可自定义 keyFields 来构建缓存键。
例如,一个按页码和关键词缓存的搜索结果:
new InMemoryCache({
typePolicies: {
SearchResult: {
keyFields: ['keyword', 'page']
}
}
})
这样即使没有 id,Apollo 也能正确识别并缓存不同条件下的结果。
缓存过多或过期数据会影响内存和准确性。可通过以下方式管理:
合理选择清理方式,避免误删仍在使用的数据。
基本上就这些。掌握这些技巧后,你能更好地控制 Apollo Client 缓存行为,让应用更高效稳定。关键在于理解数据流向,并在变更时及时同步缓存。
以上就是JavaScriptGraphQL_ApolloClient缓存管理技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号