Falcor 如何在服务器端缓存数据?
Posted
技术标签:
【中文标题】Falcor 如何在服务器端缓存数据?【英文标题】:How does Falcor cache data in the server side? 【发布时间】:2017-02-01 16:26:18 【问题描述】:我知道在 falcor 客户端,它会在模型中缓存数据。在应用服务器端,我们需要实现 falcor 路由作为数据源。 Falcor 是否在应用服务器端缓存数据?如果是这样,怎么做? 谢谢,
【问题讨论】:
我邀请你看看the code。 【参考方案1】:简而言之,不,falcor-router 不缓存数据。因为单个请求可能由多个路由解析,所以路由器确实构建了每个请求的缓存,但在路由器完成对请求的响应后,该缓存会被删除。
例如以下请求
method=get
paths=[
items[0..10]['id', 'name'],
items.length,
]
可以通过两个或三个不同的路径来解决,例如
[items[range]]
[items.length]
[itemsById[keys]
路由器会将每个路由响应合并到一个图形片段中,直到它解析所有请求的路径并跟踪所有返回的 ref 节点。这个图片段可以被认为是每个请求的缓存(或者至少,它在source code 中是这样引用的),但是在响应返回给客户端后它会被删除。
这意味着一些事情:
服务器不知道客户端上有/没有什么数据 图形片段没有具体化,这意味着运行相同的查询两次(假设它没有命中您的 falcor 客户端模型的缓存)将运行相同的查询。服务器端缓存和缓存失效更适合在数据库层而不是路由器层处理
【讨论】:
以上是关于Falcor 如何在服务器端缓存数据?的主要内容,如果未能解决你的问题,请参考以下文章