Аннулирование unstable_createResource в реакции-кеше / ожидании
Как сделать недействительным ресурс, созданный react-cache
?
Я могу получить данные из API:
const FooResource = createResource(id => fetch(`/foo/${id}`)); // return a promise, or async/await
// inside render...
const fooResponse = FooResource.read(id); // suspends if not in cache; renders if in cache
return <div> {fooResponse} </div>;
Однако, когда я обновляю данные на бэкэнде, я не могу повторно получить данные на веб-интерфейсе.
Это единственная официальная документация, которую мне удалось найти: https://github.com/sw-yx/fresh-concurrent-react/blob/master/apis/react-cache.md
Есть ли недокументированный API, который я могу использовать?
3 ответа
В общем, вы не можете, и поэтому он "нестабилен". Не используйте его ни для чего, кроме демонстраций и мастеринга. Мы, вероятно, заменим все это другим API.
Существует гораздо больше контроля над кешем требуется с помощью react-cache
, Кажется, он написан с учетом только рендеринга на стороне клиента (хотя он работает как на csr, так и на ssr).
На сервере высока вероятность того, что для определенного интервала необходимо кэшировать только несколько определенных API. Все пользовательские API или данные не должны кэшироваться в реагирующем кеше.
Реактивный кеш должен обеспечивать контроль, позволяющий дифференцировать поведение кеширования как на клиенте, так и на сервере, поскольку в обеих средах используются совершенно разные варианты использования.
По состоянию на сейчас react-cache
использует политику кэширования LRU (используется в последнее время). По этой политике наименее недавно использованные записи становятся недействительными первыми.
Размер кеша можно установить с помощью функции unstable_setGlobalCacheLimit
,
Я не смог найти функцию для явного аннулирования кэша в проекте. Я также думаю, что это хорошая новость, потому что работа с кешем, как правило, хлопотная. Похоже, что LRU сделает это проще для большинства пользователей React.
Ручное управление кэшем может найти свое применение в будущих версиях react-cache
По мере того, как все больше разработчиков внедряют эту технологию и открывают для себя новые варианты использования, для которых требуется индивидуальный подход, но я сомневаюсь, что это то, что нужно учитывать на данный момент.
В настоящее время react-cache
исходный код не указывает ни на что invalidation
возможности. Имеет смысл нуждатьсяinvalidation
, чтобы обновить результаты, например, после добавления нового комментария или публикации, а также использовать suspense
с post/put/delete
запросы, которых не должно быть cached
по умолчанию в первую очередь.