내 요구 사항은 서버에서 매번 요청하지 않고 브라우저 수준에서 일부 메타 데이터를 다시 사용하는 것입니다. 내 휴식 끝은 스프링 부트를 사용하여 작성되었으며 캐시 제어 및 최대 연령 헤더를 내 응답에 추가했습니다. 최대 나이를 10 초로 설정했습니다. 내 이해에 따라 우리는 css 및 js 파일과 같은 고정 자산에 대해이 작업을 수행 할 수 있습니다. 객체 (응답)로 할 수 있습니까?스프링 부트 컨트롤러에서 캐시 제어를 사용하여 응답을 캐시 할 수 있습니까?
@CrossOrigin
@RequestMapping(value = "/retrieve/{name}", method = RequestMethod.GET)
public ResponseEntity<Course> getCourses(@PathVariable String name) {
Course course = new Course();
HttpHeaders headers = new HttpHeaders();
try {
System.out.println("Call is here.");
course = courseService.getCourse(name);
headers.add("Cache-control", "private");
headers.add("max-age", "10");
} catch (Exception e) {
return new ResponseEntity<>(course, HttpStatus.BAD_REQUEST);
}
return new ResponseEntity<>(course, headers, HttpStatus.OK);
}
그러나 프런트 엔드 수준에서는 요청이 여전히 서버로 전달되어 새로운 응답을 제공합니다. 내 클라이언트 측 프레임 워크로 angualr을 사용하고 있습니다. 응답 헤더에서 언급 한 최대 허용 값을 완료 한 후 응답 데이터를 지우고 싶습니다.
이것은 관련된 각도 성분입니다.
app.component('searchCourseComponent', {
bindings: {
name: '<',
},
templateUrl: 'components/course-search/course-search.component.html',
controller: function (localStorageService, CourseService) {
var vm = this;
vm.searchCourseByName = function (name) {
if (localStorageService.isSupported) {
console.log("localStrage is supporting in this browser");
var course = CourseService.searchCourse(name).then(function (response) {
localStorageService.set("course", response.data);
});
}
else {
console.log("Local storage is not supporting");
}
};
}
});
저는 각진 응용에서 똑같은 것을했습니다. 그러나 브라우저에서 값을 저장할 수 있습니다. 하지만 다시 요청을 보내면 서버로 간다. 캐시 사본을 사용하지 않습니다. 그게 문제 야. –
더 나은 이해를 위해 각도 코드를 공유 할 수 있습니까 –
코드를 추가했습니다. –