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

问题描述:

我使用Sails.js作为我的项目的基础,到目前为止我试图使用AngularJS模块化每个UI元素。避免Sails.js + AngularJS中的太多请求(缓存HTTP请求)

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

那么,如何减少请求数量并在所有控制器之间共享数据呢?

我已经想到了2级不同的解决方案:

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

您是否想过在角度服务中缓存数据? – aw04 2014-10-06 17:11:35

+0

我真的不知道!我会寻找更多关于它的信息。谢谢! – siannone 2014-10-06 17:53:34

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

一个简单的方法来做到这一点是下列之一:

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

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

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; 
}); 

该服务可以被注入任何控制器。

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