【问题标题】:How does Falcor cache data in the server side?Falcor 如何在服务器端缓存数据?
【发布时间】:2017-02-01 16:26:18
【问题描述】:

我知道在 falcor 客户端,它会在模型​​中缓存数据。在应用服务器端,我们需要实现 falcor 路由作为数据源。 Falcor 是否在应用服务器端缓存数据?如果是这样,怎么做? 谢谢,

【问题讨论】:

标签: falcor falcor-router


【解决方案1】:

简而言之,不,falcor-router 不缓存数据。因为单个请求可能由多个路由解析,所以路由器确实构建了每个请求的缓存,但在路由器完成对请求的响应后,该缓存会被删除。

例如以下请求

method=get
paths=[
  items[0..10]['id', 'name'],
  items.length,
]

可以通过两个或三个不同的路径来解决,例如

[items[{range}]]
[items.length]
[itemsById[{keys}]

路由器会将每个路由响应合并到一个图形片段中,直到它解析所有请求的路径并跟踪所有返回的 ref 节点。这个图片段可以被认为是每个请求的缓存(或者至少,它在source code 中是这样引用的),但是在响应返回给客户端后它会被删除。

这意味着一些事情:

  • 服务器不知道客户端上有/没有什么数据
  • 图形片段没有具体化,这意味着运行相同的查询两次(假设它没有命中您的 falcor 客户端模型的缓存)将运行相同的查询。

服务器端缓存和缓存失效更适合在数据库层而不是路由器层处理

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多