Аннулирование 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 по умолчанию в первую очередь.

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