unstable_createResource 在 react-cache/suspense 中失效

unstable_createResource invalidation in react-cache/suspense

如何使 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?

截至目前 react-cache 使用 LRU最近最少使用)缓存策略。根据此策略,最近最少使用的条目首先失效。

可以使用函数 unstable_setGlobalCacheLimit.

设置缓存的大小

我在 the project. I also think that it is good news, 'cause dealing with cache 中找不到用于显式缓存失效的函数通常很麻烦。看起来 LRU 会让大多数 React 用户更容易。

随着越来越多的开发人员接受这项技术并发现需要自定义方法的新用例,手动缓存控制可能会在 react-cache 的未来版本中找到它的方式,但我怀疑这是现在应该考虑的事情。

使用 react-cache 需要对缓存进行更多控制。它似乎只考虑客户端渲染而编写(尽管它适用于 csr 和 ssr)。

在服务器上,很可能只有几个特定的​​ API 需要在给定时间间隔内缓存。所有特定于用户的 API 或数据不应缓存在 react-cache 中。

react-cache 应该控制以区分客户端和服务器上的缓存行为,因为这两种环境具有完全不同的用例。

一般来说 — 你不能,这就是为什么它是 "unstable"。除了演示和修补外,不要将它用于任何其他用途。 我们可能会用不同的 API 替换整个东西。

目前,react-cache 源代码未指向任何 invalidation 功能。需要 invalidation 更新结果是有意义的,例如在您添加新评论或 post 之后,以及使用 suspensepost/put/delete 请求,这首先不应该默认为 cached