Vue/Apollo:apollo 会关心缓存已经访问过的页面,还是我必须将它们保存在我的商店中?

Posted

技术标签:

【中文标题】Vue/Apollo:apollo 会关心缓存已经访问过的页面,还是我必须将它们保存在我的商店中?【英文标题】:Vue/Apollo: Will apollo care about caching already visited pages or do I have to save them in my store? 【发布时间】:2020-01-05 12:42:27 【问题描述】:

我正在使用 apollo 和 vue (nuxt) 构建一个应用程序,我想知道是否必须将已经获取的页面保存在我的商店中,如果我希望它超级快速,每当用户返回他已经访问过的页面时。

现在我有一部分是在显示页面之前获取一些阿波罗查询。收到数据后,我可以将其保存到商店中,以便在有人返回该页面时准备好内容。

但也许 Apollo 正在通过其智能缓存行为为我完成这项工作?

感谢您对此问题的一些意见。 干杯

【问题讨论】:

【参考方案1】:

Apollo 使用内存缓存来缓存您的查询响应,然后在再次触发相同查询时从缓存中检索响应。这是默认行为,但也可以通过提供特定的fetch policy 来修改它。

由于缓存存储在内存中,如果用户刷新页面或导航离开,它将被擦除。如果需要持久化缓存,请查看apollo-cache-persist。

【讨论】:

好的,谢谢您的回答。在开发过程中,我也经历了相当长的加载时间。每次我重新加载我的本地主机时,我都会等待一段时间,直到所有阿波罗获取完成(至少我相信如此)。你认为使用 apollo-cache-persist,我也可以克服这个问题吗?至少对于本地发展? 保持缓存有助于后续加载。如果 API 请求本身需要很长时间,则可能表明架构设计不佳。 我怎样才能发现糟糕的架构设计?我在 Craft CMS 中从用户的角度设计了它,以使其尽可能直观。 (我只是假设这会影响我的架构,对吧?) 对于这个问题和 SO 来说,这有点超出了范围。如果不查看您的架构,很难回答。你可以看看一些关于优化的文章,比如this和this。 谢谢。很抱歉偏离了原来的问题:)

以上是关于Vue/Apollo:apollo 会关心缓存已经访问过的页面,还是我必须将它们保存在我的商店中?的主要内容,如果未能解决你的问题,请参考以下文章

Vue Apollo 重新获取事件查询

如何为 Vue Apollo 导入 Apollo Client 3?

如何在较旧的IOS /旧浏览器上使用Graphql Vue Apollo?

如何将 @vue/apollo-composable 添加到 Quasar 框架

如何使用 @vue/composition-api 和 nuxt.js 获取 vue-apollo 实例

Vue Apollo TypeScript:ApolloClient 缺少 websocket 属性