我的角度应用程序只需要在应用程序加载时从服务器获取数据,然后只与服务器通信以覆盖数据。有没有推荐的方法来实现它?
到目前为止,我正在使用$resource.query
来获取初始数据集,将资源存储在服务中,并且我认为现在我需要覆盖GET操作,但我不确定如何去抑制它与服务器通信。
我还有另一个名为getLatest
的Web服务,该服务执行大量服务器端工作以获取其他记录,然后我需要将其附加到我的缓存资源。我该怎么做呢?我想过从检索到的数据中以某种方式手动创建Resource实例,或者在getLatest调用返回后可能触发一个新的(未缓存的)资源查询(虽然这对我来说似乎效率低下)
答案 0 :(得分:2)
@tschiela是对的,您可以在资源上使用cache
属性来缓存资源。
但是你应该了解缓存失效策略。
$http
服务缓存荣誉HTTP expiration header
(如果有的话)。 基于总体服务器的HTTP过期标头是提供缓存的最佳方式,因为服务器上有更多控制权,大多数浏览器都会为GET请求提供服务。
答案 1 :(得分:1)
您可以使用cache:true
.factory('Data', function($resource){
return $resource('http://some.url.of.api', {}, {
'get' : { method:'GET', cache: true }
});
})
或者您可以实现自己的缓存工厂。请阅读AngularJS文档中的更多信息:$resource