rks*_*ksh 3 javascript caching angularjs
我是角度新手,我需要缓存数据以提高性能.为此,我使用Angular的$ cacheFactory.
当我尝试时,
myApp.factory('myCache', function($cacheFactory) {
return $cacheFactory('myData');
});
Run Code Online (Sandbox Code Playgroud)
同
myApp.controller('MyMain', ['$scope', '$http', 'myCache',
function ($scope, $http, myCache) {
var cache = myCache.get('myData');
if (cache) {
$scope.variable = cache;
}
else {
$http.get('http://www.example.com/path/to/api/endpoint')
.success(function(data) {
$scope.variable = data;
myCache.put('myData', data);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它只缓存一组数据,因为我想缓存我使用的多组数据
myApp.factory('myCache', function($cacheFactory) {
return {
get : function(cacheKey){
return $cacheFactory(cachekey);
}
}
});
Run Code Online (Sandbox Code Playgroud)
所以,如果我转到另一个页面,我可以缓存另一组这样的数据,
myApp.controller('MyMain', ['$scope', '$http', 'myCache',
function ($scope, $http, myCache) {
var cache = myCache.get('myData2');
if (cache) {
$scope.variable = cache;
}
else {
$http.get('http://www.example.com/path/to/api/endpoint')
.success(function(data) {
$scope.variable = data;
myCache.put('myData2', data);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
等等
然而,在后一种方式中,虽然它没有给出任何错误,但没有返回数据,也没有进行ajax调用来缓存数据.
我怎样才能解决这个问题?并使用$ cacheFactory缓存多组数据?
如果您的URL对于您要查询的数据是唯一的,那么您应该使用内置缓存$http:
$http.get('http://www.example.com/path/to/api/endpoint', { cache: true }).success(...
Run Code Online (Sandbox Code Playgroud)
这将根据cacheProvider您的URL参数的唯一性进行缓存.
| 归档时间: |
|
| 查看次数: |
5525 次 |
| 最近记录: |