CSR 缓存与 Next.js
浏览器缓存使用 Core 的 createCsrCache,只有在需要 Next.js 服务器数据缓存时才添加 /next 的 callApiSsrCache。
缓存包装器也是 commonService 的一部分
本页的 callApiClientCache/callApiServerCache 代码仅解释项目公共 HTTP 适配器的缓存部分。生成的服务可以配置为导入此函数,因此首先查看整个 rxjsHttpService.ts/commonService.ts 结构,可以更清楚地了解每个包装器的位置和角色。
CSR 缓存(客户端缓存)
createCsrCache<CacheName>()提供 callApiCsrCache(callApiFn, serviceArgs, cacheOptions) 和 removeCsrCache(cacheName)。
在服务器环境中,不创建 CSR 缓存映射,而是直接调用原始 callApi。在浏览器中,使用 shareReplay 共享相同缓存键的 Observable 结果。
Next.js 适配器:callApiSsrCache
使用 Next.js 的 next/cache(unstable_cache)的 SSR 辅助工具。如果是 GET 且 cacheTime > 0,则使用 force-cache + revalidate,其他请求则以 no-store 执行。
- 可以通过 headersProvider 注入请求的 Cookie/Authorization。
- 在 401 时,如果存在 onServer401,则执行。
不缓存用户数据
将浏览器/服务器打包为一个项目包装器时
在公共服务中,浏览器可以通过 createCsrCache,服务器可以通过 callApiSsrCache 进行分支。这是项目配置模式,并不是 Core 自身的必需结构。
commonService.ts
tscommonService.ts
ts在自动生成服务中使用缓存包装器时,仅将此包装器连接到需要缓存功能的端点,其余则直接使用普通 callApi。