Посмотрите «Понимание политиков кеша и запросов документов 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”