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 如何在服务器端缓存数据?的主要内容,如果未能解决你的问题,请参考以下文章

Falcor:避免过时的客户端缓存

Falcor - 未缓存的深层嵌套引用

Worklight 6.1 - 如何将数据库数据存储在缓存中的某处以避免服务器端数据库的多次命中

系统架构设计中缓存的重要性

如何关闭Laravel的缓存

asp.net 服务器端缓存与客户端缓存 [转]