서버에서 어떤 요청에 대해서 캐싱을 하려면 고려해야 할 것들이..
1. 정상 반환에 대해서만 캐싱
2. 유효한 캐싱 시간을 설정하고 지나면 삭제 후 다시 로딩/계산 후 캐싱 (왜냐면 그 사이에 내용이 변화할 수 있으니까)
스프링 프레임워크를 놓고 본다면...
@Cachable(value = "캐시이름", key = "#캐싱키이름(파라미터)", unless = "#result == null")
public Object methodForCache(Object 캐싱키이름(파라미터)) {
무언가 작업을 하고;
return 결과물;
}
이 때, 스프링 캐시의 구현체로 설정하는 ehcache, redis 등의 cache manager 에서 ttl (time to live) 설정을 하는 것도 가능하겠지만..
수동으로 한다면?
@CacheEvict(cacheNames="캐시이름", allEntries=true)
@Scheduled(fixedRate=시간)
public void evictCache() { }
으로 시간을 설정해서 초기화 가능하다.
@EnableScheduled ? 였나 선언 안하면 스케줄 안먹는거 까먹지 말장
api 호출로 특정 이름과 키값의 캐싱을 삭제 할 수 있도록 백도어?를 만들어두기도 했던 것 같다.
캐싱은 강력하고 강력한 힘에는 책임이..?
'Programming' 카테고리의 다른 글
젠킨스, Jenkins, 도커, Docker, 컨테이너, CICD (0) | 2024.06.21 |
---|---|
맥북 개발용 최초 세팅 (MACBOOK development environment initial setting) (0) | 2024.06.11 |
Java collection 교집합 retainsAll() 에 대하여 (List, Set, 시간복잡도, 최적화) (2) | 2022.10.23 |
HTTP 메시지에 관하여.. (HTTP/1.1 기준) (0) | 2022.08.19 |
MySQL vs Cubrid, 차이에 관하여... (0) | 2022.08.04 |