我想禁用缓存或将缓存限制为24小时。我的ApolloClient仅在服务器端运行。
我的环境:
现在,这就是我配置ApolloClient
的方式。
new ApolloClient({
ssrMode: true,
cache: new InMemoryCache(),
link: WithApollo.BatchLink(),
credentials: 'same-origin',
});
The closest thing I saw in docs is FetchOptions
...但是它没有指定我可以实际使用哪些选项来满足我禁用或限制缓存的需要。
答案 0 :(得分:1)
使用Apollo Boost无法做到这一点。您需要迁移到migrate to using Apollo Client。这将使您可以为defaultOptions
构造函数提供shown in the docs的ApolloClient
选项:
const defaultOptions = {
watchQuery: {
fetchPolicy: 'no-cache',
},
query: {
fetchPolicy: 'no-cache',
},
}
实际上可以在每个单独的fetchPolicy
调用或query
组件上设置Query
选项-通过提供defaultOptions
对象,您不必指定{{1 }}作为您使用的每个单独no-cache
组件的提取策略。这也意味着,如果您打算保留Boost,可以在每个组件上进行。但是,以上是如何有效地“关闭”整个客户端的缓存。
答案 1 :(得分:1)
也许有人想知道如何确切地禁用apollo-boost
ApolloClient的缓存,所以让我们来谈谈。
@Daniel说的是事实,我们不能直接执行new ApolloClient
的{{1}}时禁用缓存,但是可以在发出请求时设置apollo-boost
。代码如下:
fetchPolicy
您可以从there中找到 // create client first
import ApolloClient from "apollo-boost";
const client = new ApolloClient({ uri: GRAPHQL_URL })
// Set the fetchPolicy when we send request
import { gql } from 'apollo-boost';
client.query({
query: gql`
query someInfo($id: ID!) {
info(id: $id) {
id
name
}
}`,
variables:{id: '123'},
fetchPolicy: 'no-cache'
})
的有效值。