我应该如何处理 Siesta 中的部分 EntityCache 命中?
How should I handle partial EntityCache hits in Siesta?
我有一个端点,我可以在其中请求使用 Siesta 查询的多条数据(例如 https://example.com/things?ids=1,2,3
)。如果我只缓存了一些 things
,我试图弄清楚我的持久实体缓存的正确行为。因此,如果我有事物 1 和事物 2,但没有缓存事物 3,我想 return 部分命中并让 Siesta 也使用原始 URL 查询我的服务器。然而,我的理解是,如果 EntityCache.readEntity
returns 任何东西,那么 Siesta 会假定查询已完全满足,并且不会继续进行网络请求。
有什么好办法实现部分命中,还是需要从readEntity
returnnil
然后等待服务器响应?
让你的缓存 return 具有 Entity.timestamp
的部分内容在遥远的过去。 (使用零没问题。)这将导致 1,2 部分内容在启动时和离线时立即出现,但 loadIfNeeded()
会认为该内容已过时,因此仍会触发对 1,2,3 的请求。
我有一个端点,我可以在其中请求使用 Siesta 查询的多条数据(例如 https://example.com/things?ids=1,2,3
)。如果我只缓存了一些 things
,我试图弄清楚我的持久实体缓存的正确行为。因此,如果我有事物 1 和事物 2,但没有缓存事物 3,我想 return 部分命中并让 Siesta 也使用原始 URL 查询我的服务器。然而,我的理解是,如果 EntityCache.readEntity
returns 任何东西,那么 Siesta 会假定查询已完全满足,并且不会继续进行网络请求。
有什么好办法实现部分命中,还是需要从readEntity
returnnil
然后等待服务器响应?
让你的缓存 return 具有 Entity.timestamp
的部分内容在遥远的过去。 (使用零没问题。)这将导致 1,2 部分内容在启动时和离线时立即出现,但 loadIfNeeded()
会认为该内容已过时,因此仍会触发对 1,2,3 的请求。