Установить время жизни для ключей в загрузчике данных
Эй, есть какой-то способ установить время, чтобы жить ключами в data-loader
(библиотека для кэширования и пакетирования, созданная разработчиками Facebook)?
В их документах есть только clearAll()
функция, но я хочу очистить каждый ключ отдельно через X секунд с момента, когда я вставил его в кеш
1 ответ
Кэш DataLoader живет только для длины запроса и зависит от этого отдельного запроса. При использовании с GraphQL каждый экземпляр DataLoader воссоздается с контекстом запроса. Из документации:
Кэширование DataLoader не заменяет Redis, Memcache или любой другой общий кэш уровня приложения. DataLoader - это, прежде всего, механизм загрузки данных, а его кеш служит только для повторной загрузки одних и тех же данных в контексте одного запроса к вашему Приложению. Для этого он поддерживает простой кэш-память для напоминания в памяти (точнее: .load() - это функция для заметок).
Пока есть clear
а также clearAll
методы, доступные в экземпляре DataLoader, эти методы предназначены для использования только в некоторых крайних случаях, когда вы запускаете несколько мутаций в одном запросе, и мутация может привести к устареванию кэшированного значения в одном запросе.
Несмотря на то, что вы могли бы заранее использовать тайм-ауты для достижения того, о чем вы просите, не должно быть необходимости аннулировать или очищать кеш через определенное время - он исчезнет, как только ваш запрос будет завершен.