인프런 커뮤니티 질문&답변

J_님의 프로필 이미지
J_

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

캐시저장소에서 캐시데이터가 소멸되는 시기

해결된 질문

작성

·

203

·

수정됨

1

  • (검증헤더와 조건부 요청의 사용여부와는 관계없이 모든 경우에) 클라이언트가 데이터를 요청할 때 마다 클라이언트는 캐시 저장소를 먼저 뒤진다. 데이터가 유효하다면 해당 요청 자체가 서버에게 도달하지 않고 캐시된 이미지를 바로 사용한다.

  • (검증헤더와 조건부 요청을 사용하지 않는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 요청한 캐시 데이터의 유효시간이 초과되었다면, 해당 요청은 서버에게 전달되며 클라이언트는 서버로부터 데이터를 새로 전달받는다.

  • (검증헤더와 조건부 요청을 사용하는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 캐시 데이터의 유효시간이 초과되었다면, 데이터 최종 수정일 값을 검증헤더if-modified-since에 넣어 서버에게 요청을 전달한다. 서버가 이를 확인하여 캐시된 데이터의 변경여부를 판단하고, 변경되지 않았다면 메시지 바디 없이 304 Not Modified 응답을 반환한다. 클라이언트는 응답 결과를 기반으로 캐시의 메타 정보를 갱신한다. 만약 데이터가 변경된 경우에는 클라이언트는 서버로부터 데이터를 새로 응답받는다.

⇒ 즉, 캐시의 유효기간이 지났더라도 검증헤더와 조건부 요청을 사용하면, 데이터가 변경되지 않았을 경우에는 캐시데이터를 재사용할 수 있게 해준다.

 

 

 

이렇게 정리를 해보았는데요, 궁금한 점이 있습니다! (+ 위 정리 내용이 정확할까요?)

위 설명대로라면 캐시 데이터의 유효시간이 초과된 경우에도, 캐시저장소에는 유효시간이 지난 캐시데이터가 존재해야 하는거잖아요, 그렇다면 '유효시간'이라는 것은 무엇을 의미하는 건가요? 캐시데이터의 유효시간이 지나면 바로 캐시저장소에서 해당 캐시데이터가 소멸된다고 생각했는데 그러니까 위 설명이 이해가 가지 않아서요,, 캐시저장소에서 유효시간이 지난 캐시데이터는 언제 소멸되는건가요?

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 허은정님

생각하신 내용이 맞습니다.

추가로 질문하신 캐시저장소에서 유효시간이 지난 캐시데이터의 소멸 시기에 대해 설명드릴께요.


캐시 데이터 소멸 시기:

  • 캐시 데이터는 여러 가지 이유로 저장소에서 제거될 수 있습니다. 예를 들어, 캐시 저장소가 꽉 찼을 때, 가장 오래되거나 자주 사용되지 않는 캐시 데이터부터 제거하는 방식(LRU - Least Recently Used 등의 알고리즘 사용)으로 공간을 확보할 수 있습니다.

  • 또한, 클라이언트나 서버가 명시적으로 캐시를 무효화하는 경우(예: Cache-Control: no-cache 헤더 사용)에도 캐시 데이터가 제거될 수 있습니다.

  • 유효시간이 지난 캐시 데이터는 자동으로 삭제되지 않고, 필요에 따라 검증을 거쳐 재사용되거나, 새로운 데이터로 대체되어 갱신될 때까지 유지될 수 있습니다.

결론적으로, 캐시 데이터의 유효시간이 지났다는 것은 자동으로 그 데이터가 캐시에서 삭제되는 것을 의미하지 않습니다. 대신, 이는 데이터가 더 이상 확실하게 신뢰할 수 없으며, 재사용하기 전에 서버의 검증이 필요함을 의미합니다. 참고로 캐시에 대한 삭제 정책은 웹 브라우저마다 다릅니다. 추가로 웹 브라우저에서 캐시 정보를 직접 제거할 수도 있습니다.

감사합니다.

J_님의 프로필 이미지
J_

작성한 질문수

질문하기