Посмотрите «Понимание политиков кеша и запросов документов URQL» (ресурс сообщества) на Egghead.
Когда вы настраиваете urql
Клиент, клиент поставляется с обменами по умолчанию, которые проходят ваши операции.
Эти обмены [dedupexchange, cacheexchange, fetchexchange]
. Порядок массива имеет значение.
const client = new Client({ url: 'http://graphql.org/swapi-graphql/', exchanges: [dedupExchange, cacheExchange, fetchExchange], })
В этом случае dedupexchange
это первый обмен, который пройдет операция GraphQL. Этот обмен имеет одну задачу: удалить случайные дубликаты запросов. Если вы не управляете своими входами, пользователь может привести к тому, что многие запросы одновременно.
Следующий обмен, через который проходит операция – это Cacheexchange
. Этот обмен кэширует любые успешные запросы. Это Кэш документа [01]. Этот вид кеша берет запрос, который вы написали, и переменные и хэшируют их вместе. Всякий раз, когда urql
Находит операцию, проходящую через хеш, который соответствует хеш в Cacheexchange
, это вернет это значение на основе requestPolicy
Анкет
requestPolicy
для Cacheexchange
может быть 1 из 4 вещей:
- Кэш-первый
- только кеш
- сеть только
- Кэш и сеть
Кэш-первый
Политика по умолчанию. Он говорит urql, что если операция перешла к Cacheexchange
уже хранится, найденные данные должны быть возвращены и Операция не должна передаваться в FetchExchange
. Если операция хэш не хранится в кэше, то она передана в FetchExchange
только кеш
Работает так, как будто это звучит: он будет смотреть только в кэше для данных, соответствующих хэш -хешу, и не будет передавать операцию на `fetchExchange.
только сеть
всегда будет пропускать кеш и передать операцию FetchExchange
Анкет
Кэш и сеть
Вернут любое значение в кэше и передаст операцию FetchExchange
Даже если был успешный удар в кеш. FetchExchange
Затем обновит кэш, когда запрос вернется.
Чтобы изменить по умолчанию requestPolicy
Вы можете пройти одно из этих значений через Клиент
объект конфигурации.
JS const client ({ URL: ‘http://graphql.org/swapi-graphql/’, Обмен: [dedupexchange, cacheexchange, fetchexchange], requestPolicy: «кеш-и сеть», })
Последний обмен по умолчанию, который проходит ваша операция GraphQL, – это FetchExchange
. Этот обмен использует Fetch
Чтобы сделать HTTP -запрос на URL, определенный на клиенте.
Другие обмены, на которые можно посмотреть на Документация Анкет
RetryExchange
: Позволяет повторной эксплуатацииdevtoolsexchange
: Предоставляет возможность использовать Urql-DevtoolsMultipartFetchExchange
: Предоставляет возможности загрузки Multipart FileSusepenseExchange
(Экспериментальный): Позволяет использовать RACE SUSCENCE на стороне клиента со встроенным режимом URQL- График кэш
Cacheexchange
Оригинал: “https://dev.to/theianjones/understand-urql-s-exchanges-and-request-policies-1gop”