大家好,我有一个问题。我正在使用Nuxtjs + Apollo模块https://github.com/nuxt-community/apollo-module
我有2页,第1页用于项目页面,第1页用于项目更新。
问题是,当我访问项目页面时,每个GQL请求都会调用我的laravel服务器(从mount()。返回首页,我的请求不会再次调用服务器。每当我访问首页时,都需要调用它。任何人都可以给我一些解决方案?谢谢
您需要使用Apollo查询中可用的fetchPolicy
选项。 The Vue Apollo documentation only briefly mentions the option,但是the React Apollo are more thorough about your choices(版本之间的选项相同)。
默认行为是cache-first
。从React Apollo Docs:
cache-first:这是我们始终尝试读取的默认值首先从缓存中获取数据。如果需要所有数据来满足您的要求查询在缓存中,然后将返回数据。阿波罗将仅当无法获得缓存结果时才从网络获取。这个提取策略旨在最大程度地减少以下情况下发送的网络请求的数量:渲染您的组件。
您听起来好像想要network-only
,再次引用React Apollo文档:
仅限网络:此提取策略将永远不会返回您初始数据从缓存中。相反,它将始终使用您的服务器的网络接口。此提取策略可优化数据与服务器保持一致,但以立即响应为代价一个可用的用户。
因此您在页面上的查询将类似于:
<script>
export default {
apollo: {
project: {
query: MY_PROJECT_QUERY,
variables() { return { projectId: this.$route.params.projectId } },
fetchPolicy: 'network-only'
}
}
}
</script>