캐시 무효화

캐시 무효화(Cache invalidation)는 컴퓨터 시스템에서 캐시의 항목을 교체하거나 제거하는 프로세스이다.

이는 캐시 일관성 프로토콜의 일부로 명시적으로 수행될 수 있다. 이러한 경우, 프로세서는 메모리 위치를 변경한 다음 컴퓨터 시스템의 나머지 부분에서 해당 메모리 위치에 대한 캐시된 값을 무효화한다.

 명시적 무효화 
캐시 무효화는 새로운 콘텐츠를 클라이언트로 푸시하는 데 사용할 수 있다. 이 방법은 연결된 클라이언트에게 새로운 콘텐츠를 표시하는 다른 방법에 대한 대안으로 기능한다. 무효화는 애플리케이션 데이터를 변경하여 수행되며, 이는 클라이언트가 받은 정보가 오래되었음을 표시한다. 캐시가 무효화된 후, 클라이언트가 캐시를 요청하면 새로운 버전이 제공된다.

 방법 
캐시를 무효화하는 세 가지 특정 방법이 있지만, 모든 캐싱 프록시가 이러한 방법을 지원하는 것은 아니다.

 퍼지 
캐싱 프록시에서 콘텐츠를 즉시 제거한다. 클라이언트가 데이터를 다시 요청하면 애플리케이션에서 가져와 캐싱 프록시에 저장된다. 이 방법은 캐시된 콘텐츠의 모든 변형을 제거한다.

 새로 고침 
캐시된 콘텐츠를 사용할 수 있는 경우에도 애플리케이션에서 요청된 콘텐츠를 가져온다. 이전에 캐시에 저장된 콘텐츠는 애플리케이션에서 가져온 새 버전으로 대체된다. 이 방법은 캐시된 콘텐츠의 한 가지 변형만 영향을 미친다.

 차단 
캐시된 콘텐츠에 대한 참조는 블랙리스트 (또는 차단 목록)에 추가된다. 클라이언트 요청은 이 블랙리스트와 대조하여 확인되며, 요청이 일치하면 애플리케이션에서 새 콘텐츠를 가져와 클라이언트에 반환하고 캐시에 추가한다.

이 방법은 퍼지와 달리 캐싱 프록시에서 캐시된 콘텐츠를 즉시 제거하지 않는다. 대신, 클라이언트가 해당 특정 정보를 요청한 후에 캐시된 콘텐츠가 업데이트된다.

 대안 
업데이트된 콘텐츠를 클라이언트에 제공하는 캐시 무효화의 몇 가지 대안이 있다. 한 가지 대안은 TTL(time-to-live)을 매우 낮은 값으로 줄여 캐시된 콘텐츠를 빠르게 만료시키는 것이다. 또 다른 대안은 각 요청에서 캐시된 콘텐츠의 유효성을 검사하는 것이다. 세 번째 옵션은 클라이언트가 요청하는 휘발성 콘텐츠를 캐시하지 않는 것이다. 이러한 대안은 정보를 더 자주 요청하기 때문에 애플리케이션에 높은 부하를 발생시켜 문제를 일으킬 수 있다.

 단점 
여러 객체를 무효화할 때 무효화를 사용하여 새로운 콘텐츠를 전송하는 것은 어려울 수 있다. 여러 표현을 무효화하면 애플리케이션에 복잡성이 추가된다. 캐시 무효화는 캐싱 프록시를 통해 수행되어야 하며, 이러한 요청은 캐싱 프록시의 성능에 영향을 미쳐 클라이언트에 정보가 더 느리게 전송되도록 할 수 있다.

 각주 

분류:캐시 일관성