Webservice의 데이터를로드 한 다음 localStorage에 저장하는 AngularJS 함수가 있습니다. 이 함수를 처음 호출 한 후에는 데이터가 localStorage에서로드되어야합니다 (캐시가 한 시간 후에 유효하지 않은 경우 제외).AngularJS : 캐싱되거나 캐싱되지 않은 URL로드
이 기능을 외부화하고 싶습니다만, 동기와 비동기 호출을 한 가지 방법으로 처리하는 방법을 고민하고 있습니다. 여기에 우리가 간다.
function callWebService(url) {
var resultFromLocalStorage = localStorage.getItem(url);
if (resultFromLocalStorage && Utils.cacheIsStillValid()) { //(*)
$timeout(function() { buildTable(JSON.parse(resultFromLocalStorage)); }, 10);
} else {
$resource(url).get().$promise.then(function(result) {
localStorage.setItem("cacheExpiry", new Date().getTime() + Utils.ONE_HOUR_IN_MS);
localStorage.setItem(url, JSON.stringify(result));
buildTable(result);
});
}
}
//*Utils.cacheIsStillValid checks the localStorage item "cacheExpiry"
결국, 난 그냥이 원하는, 그래서 내가 그 캐싱 물건을 구체화하고 싶습니다 :
function callWebService(url) {
var result = getResultFromCacheOrReload(url); // to be done
buildTable(result);
}
내가 어떻게 할 수 있습니까? 방법 getResultFromCacheOrReload(url)
는 어떻게 보입니까? 문제가 해결 될 때
감사합니다, 베른
당신이해야 프로에 캐싱을 남겨주세요. etags를 설정하여 브라우저에 캐시하도록 지시하십시오. –
답변 해 주셔서 감사합니다. 불행히도 나는 우리 서버에 etags를 설정할 수 없습니다. – Bernie