AngularJS 애플리케이션이 있고 REST 서비스 응답을 캐시하고 싶습니다. angular-cached-resource 같은 일부 라이브러리는 웹 브라우저의 로컬 저장소에 데이터를 저장하여이를 수행 할 수 있습니다.AngularJS를 사용한 REST 서비스 캐시 전략
가끔 POST/PUT/DELETE REST 호출을 수행 한 다음 일부 이전에 캐시 된 서비스 응답을 다시 수행해야합니다. 따라서 캐시 된 응답을 삭제하면 다음 번에 서버에 호출이 전송 될 수 있습니다.
하지만 서버가 HTTP Header
에 나를 보내면 어떤 값이 expires
또는 etag
과 같은 것입니까? HTTP 헤더를 읽고 스스로 반응해야하거나 AngularJS에이 라이브러리를 처리 할 수 있습니까?
그래서 서버를 공격해야하고 로컬 저장소의 캐시를 읽지 않으면 HTTP 헤더 캐시 필드에 의존하고 예를 들어 "모든 페이지를 다시로드합니다."와 같은 응답이있는 PUT/POST/DELETE 호출이있는 경우 사용자 설정 요소 "가 필요합니다. 그래서이 응답을 받아서 다음에 실행될 때 또는 캐시가 HTTP에서 만료되는 경우 REST 서비스 A, C 및 F (사용자 설정 관련 항목)가 다시 서버에 충돌해야한다는 것을 알려주는 맵을 작성해야합니다. 헤더.
AngularJS 라이브러리에서 가능합니까? 아니면 다른 권장 사항이 있습니까? Observer 또는 PubSub Pattern과 비슷하다고 생각합니다. 그렇지 않습니까?
한 가지 더 : : 캐시/로컬 저장소를 사용하지 않고 PubSub과 같은 것을 사용할 수 있습니까 (HTTP 헤더 캐시 컨트롤도 없음)? 그래서 나는 REST 서비스를 호출 할 수 없다. 왜냐하면 어떤 경우에는 원하지 않는 서버에 충돌 할 것이기 때문이다. (이전 REST 호출의 응답으로 모든 사용자 설정 요소의 "reload"이벤트를 리턴한다.)
펍/서브 패턴으로 할 수 있습니다. post/put/del 요청에서 응답이있는 이벤트를 발생시키고 서비스의 리스너가 요청을 기다린 다음 GET 요청을 받도록하십시오. – reptilicus
예,하지만 다시로드해야하는 페이지 요소가 동일한 웹 페이지에 표시되지 않기 때문에 REST 호출을 즉시 수행 할 필요가 없습니다. – Tim
우리가하는 일은 userOptionsService와 같은 서비스의 이벤트를 듣고 POST가 전송되면 userOptionsService에서 다시로드 한 다음 컨트롤러에서 userOptionsService.userOptions에 저장된 데이터를로드하는 것입니다. – reptilicus