处理apollo graphql编号分页缓存
如果我有两条路线处理apollo graphql编号分页缓存,graphql,apollo,apollo-client,Graphql,Apollo,Apollo Client,如果我有两条路线 /posts?page=1 /posts/write 让我们假设 每页有5篇文章 访问/posts?page=1,然后[post10、post9、post8、post7、post6]将保存在阿波罗缓存中 访问/posts?page=2,然后[post5、post4、post3、post2、post1]将保存在阿波罗缓存中 在这种情况下,如果我使用路由器/posts/write创建新的post,如何正确更新缓存 案例1 如果我只访问page=1,缓存中会存储5篇文章。我可以手
/posts?page=1
/posts/write
让我们假设
- 每页有5篇文章
- 访问
,然后/posts?page=1
将保存在阿波罗缓存中[post10、post9、post8、post7、post6]
- 访问
,然后/posts?page=2
将保存在阿波罗缓存中[post5、post4、post3、post2、post1]
/posts/write
创建新的post,如何正确更新缓存
案例1
如果我只访问page=1
,缓存中会存储5篇文章。我可以手动将缓存更新为[新帖子、帖子10、帖子9、帖子8、帖子7]
。然后我将url移动到page2
,page2将正确显示[post6,post5,post4,post3,post2]
。因为没有page2缓存,它将由服务器数据提供服务
案例2
如果我访问page=1
,然后访问page=2
,缓存中会存储10篇文章。如果我像案例1那样手动更新,page2
将显示[post5,post4,post3,post2,post1]
,它们是post6
消失的。而且,我不能假定用户按顺序访问第1页、第2页。用户访问urlpage1==>page4
情况如何
我如何避免这个问题?我认为已经有了解决方案。。。有人可以帮忙吗?为什么要对缓存进行操作?在服务器上新建post=变异>插入完成。。查询刷新使用结果从服务器更新缓存中重新读取数据(项id数组[按查询]和项[按id]-规范化)。您可能希望手动更新缓存,因为这样更快(节省往返时间)使用
optimisticResponse
如果您编写了手动缓存更新,您将免费获得乐观用户界面。为什么要在缓存上操作?在服务器上新建post=变异>插入完成。。查询刷新使用结果从服务器更新缓存中重新读取数据(项目id数组[按查询]和项目[按id]-规范化)。您可能希望手动更新缓存,因为它更快(节省往返时间),并且使用optimisticResponse
如果您编写了手动缓存更新,您可以免费获得乐观UI。