具有来自外部 Api 的缓存数据的 Falcor 模型

Posted

技术标签:

【中文标题】具有来自外部 Api 的缓存数据的 Falcor 模型【英文标题】:Falcor Model with Cache data from External Api 【发布时间】:2018-01-29 13:29:51 【问题描述】:

从外部 Api 发送过来的 json 数据如何缓存到 Falcor-Model 中?另外,如果缓存中不存在数据,如何在Model中指定再次命中外部Api?

我的疑问在其中一个帖子中得到了部分回答: How does Falcor cache data in the server side?

所以现在我了解到 Falcor-Model 缓存仅在客户端有效,这很好。但是如果缓存中不存在数据,模型将如何工作?

var model = new falcor.Model(source: new falcor.HttpDataSource('http://localhost/rating.json') );
  model.
    get("rating").
    then(function(response) 
      document.getElementById('filmRating').innerText = JSON.stringify(response.json.rating,null, 4);
    );

这里的响应是一个 json 对象,可以放入 Falcor-Model 缓存并全局存储在客户端。但是如果缓存中不存在数据,如何再次触发模型呢?

【问题讨论】:

【参考方案1】:

使用 Falcor 的主要优点是您不必关心数据是否存在于缓存中或从服务器获取,因为model.get() 通过发出 HTTP 请求从服务器获取缓存中丢失的所有数据.

所以,第一个model.get(path) 查询将从服务器获取,并将响应放入缓存中。如果您再次调用model.get(path),它将从缓存中提供。

【讨论】:

以上是关于具有来自外部 Api 的缓存数据的 Falcor 模型的主要内容,如果未能解决你的问题,请参考以下文章

Falcor 路由器应该从外部 API 返回值

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

Falcor 如何在服务器端缓存数据?

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

将 falcor 用于具有瞬态数据的多参数请求

为啥 Falcor 的 setValue() 不适用于外部模型?