在Sails.js + AngularJS中避免过多请求(缓存HTTP请求)

时间:2014-10-06 17:03:50

标签: angularjs module httprequest sails.js

我使用Sails.js作为我的项目的基础,到目前为止,我尝试使用AngularJS模块化每个UI元素。

虽然我认为这种方法很好,因为它允许我尽可能地重用我的代码,但最终我必须向服务器发出许多HTTP请求,因为每个模块都不与其他模块共享数据

那么,什么是减轻请求数量并在所有控制器之间共享数据的解决方案呢?

我想到了两种不同的解决方案:

  • 从后端填充视图,减少AngularJS控制器请求的数据量。
  • 使用套接字动态请求数据并缓存常用查询。

3 个答案:

答案 0 :(得分:1)

我发现您可以使用$cacheFactory(文档here)在AngularJS中缓存HTTP请求。

一种简单的方法是:

$http({
    url : '/your/path',
    method : 'POST',
    cache : true
})
.success(function (data) {
    data;
})

可以在coderwallthis StackOverflow question上找到更多信息。

答案 1 :(得分:1)

angular service通常用于在控制器之间共享数据。这是一个简单的例子。请注意,它只会首次请求获取数据,之后它将使用存储的值。

app.factory('dataService', function () {
    var service = {};
    var data;

    service.getData = function () {
        if (!data) {
            //populate data via http get or whatever
        }
        return data;
    }

    return service;
});

然后可以将此服务注入任何控制器。

答案 2 :(得分:0)

你看过angular-cache and angular-data了吗? 它既是内置角度数据通信层的包装器,也是客户端数据存储的包装器。