2014-12-19 2 views
1

저는 AngularJS와 Angular Routing을 사용하고 있습니다. 템플릿 'homeController'에 대한 템플릿 'home.html'및 컨트롤러가 있습니다. 또한,이 공장이있다 : 그 페이지를 클릭 할 때마다템플릿을로드 할 때마다 각도 공장 호출 방지.

app.factory('therapyService', function ($http) { 
    return { 
    getTherapies: function() { 
     //return the promise directly. 
     return $http.get('http://localhost:8080/application/api/rest/therapy').then(function (result) { 
     //resolve the promise as the data 
     return result.data; 
     }); 
    } 
    } 
}); 

In controller: 
therapyService.getTherapies().then(function (results) { 
$scope.therapies = results; 
... 
} 

문제는, 그 HTTP 호출을 다시 한번 호출된다. 페이지가 처음로드 될 때만 처음 호출되기를 원합니다. 그것을하는 방법?

답변

1

당신은 $http 호출로 구성 인수를 전달하여 개별 통화에 대한 캐싱을 활성화 할 수 있습니다

return $http.get('url', { cache: true }).then(...) 

당신이 당신의 전화의 대부분은 캐시와 거의 캐시되지 않은해야 볼 경우, 당신은

var myApp = angular.module('myApp',[]) 
     .config(['$httpProvider', function ($httpProvider) { 
      $httpProvider.defaults.cache = true; 
     }]) 

그런 다음 사용자가 명시 적으로 일부 캐싱을 사용하지 않도록 설정할 수 있습니다 : 응용 프로그램의 구성 단계 동안 통화 기본적으로 캐싱을 활성화 할 수 있습니다 { cache: false }을 전달하여 통화합니다. 명시 적으로 캐싱을 사용하는 것이 좋습니다. 캐싱은 최적화이며 기본적으로 응용 프로그램을 활성화하면 일부 지점에서 응용 프로그램을 사용하지 않도록 설정하는 것을 잊어 버리면 응용 프로그램이 손상 될 위험이 있습니다.

+0

캐싱은 얼마나 오래 지속됩니까? 그리고 고마워, 좋은 작품. – firstChild

+0

@firstChild 캐싱은 응용 프로그램 수명 동안 지속됩니다. –

관련 문제