Установить время жизни для ключей в загрузчике данных

Эй, есть какой-то способ установить время, чтобы жить ключами в data-loader (библиотека для кэширования и пакетирования, созданная разработчиками Facebook)?

В их документах есть только clearAll() функция, но я хочу очистить каждый ключ отдельно через X секунд с момента, когда я вставил его в кеш

1 ответ

Решение

Кэш DataLoader живет только для длины запроса и зависит от этого отдельного запроса. При использовании с GraphQL каждый экземпляр DataLoader воссоздается с контекстом запроса. Из документации:

Кэширование DataLoader не заменяет Redis, Memcache или любой другой общий кэш уровня приложения. DataLoader - это, прежде всего, механизм загрузки данных, а его кеш служит только для повторной загрузки одних и тех же данных в контексте одного запроса к вашему Приложению. Для этого он поддерживает простой кэш-память для напоминания в памяти (точнее: .load() - это функция для заметок).

Пока есть clear а также clearAll методы, доступные в экземпляре DataLoader, эти методы предназначены для использования только в некоторых крайних случаях, когда вы запускаете несколько мутаций в одном запросе, и мутация может привести к устареванию кэшированного значения в одном запросе.

Несмотря на то, что вы могли бы заранее использовать тайм-ауты для достижения того, о чем вы просите, не должно быть необходимости аннулировать или очищать кеш через определенное время - он исчезнет, ​​как только ваш запрос будет завершен.

Другие вопросы по тегам