Я хочу отключить кеширование или ограничить кеш до 24 часов. Мой ApolloClient работает исключительно на стороне сервера.

Моя среда:

  • Аполлон-буст 0.4.3
  • graphql 14.1.1
  • apollo-link-batch-http — 1.2.12

Прямо сейчас, вот как я настраиваю свой ApolloClient .

 new ApolloClient({ ssrMode: true, cache: new InMemoryCache(), link: WithApollo.BatchLink(), credentials: 'same-origin', }); 

Самое близкое, что я видел в документах, — это FetchOptions … Но в нем не указано, какие параметры я могу на самом деле передать, чтобы удовлетворить мою потребность в отключении или ограничении кэша.

Это невозможно с Apollo Boost. Вы должны мигрировать, чтобы перейти на использование Apollo Client . Это позволит вам предоставить опцию defaultOptions для вашего конструктора ApolloClient как показано в документации :

 const defaultOptions = { watchQuery: { fetchPolicy: 'no-cache', }, query: { fetchPolicy: 'no-cache', }, } 

Параметр fetchPolicy может фактически быть установлен для каждого отдельного query или компонента Query — предоставляя объект defaultOptions , вам не нужно указывать no-cache в качестве политики выборки для каждого отдельного компонента Query вы используете. Это также означает, что если вы хотите сохранить Boost, вы можете просто сделать это на каждом из ваших компонентов. Однако вышеизложенное показывает, как эффективно «отключить» кэширование для всего клиента.

Может быть, кто-то хочет знать, как именно отключить кэширование Apollo apollo-boost Boost ApolloClient, так что давайте поговорим об этом.

@ Даниил сказал, что это правда, мы не можем отключить кэширование, когда создаем new ApolloClient из apollo-boost напрямую, но мы можем установить fetchPolicy когда отправляем запрос, как fetchPolicy ниже:

  // 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' }) 

Действительное значение для fetchPolicy вы можете найти оттуда .