캐시저장소에서 캐시데이터가 소멸되는 시기
(검증헤더와 조건부 요청의 사용여부와는 관계없이 모든 경우에) 클라이언트가 데이터를 요청할 때 마다 클라이언트는 캐시 저장소를 먼저 뒤진다. 데이터가 유효하다면 해당 요청 자체가 서버에게 도달하지 않고 캐시된 이미지를 바로 사용한다.
(검증헤더와 조건부 요청을 사용하지 않는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 요청한 캐시 데이터의 유효시간이 초과되었다면, 해당 요청은 서버에게 전달되며 클라이언트는 서버로부터 데이터를 새로 전달받는다.
(검증헤더와 조건부 요청을 사용하는 경우) 클라이언트는 데이터 요청을 보낼 때 먼저 캐시 저장소를 뒤진다. 이 때, 캐시 데이터의 유효시간이 초과되었다면, 데이터 최종 수정일 값을 검증헤더
if-modified-since에 넣어 서버에게 요청을 전달한다. 서버가 이를 확인하여 캐시된 데이터의 변경여부를 판단하고, 변경되지 않았다면 메시지 바디 없이304 Not Modified응답을 반환한다. 클라이언트는 응답 결과를 기반으로 캐시의 메타 정보를 갱신한다. 만약 데이터가 변경된 경우에는 클라이언트는 서버로부터 데이터를 새로 응답받는다.
⇒ 즉, 캐시의 유효기간이 지났더라도 검증헤더와 조건부 요청을 사용하면, 데이터가 변경되지 않았을 경우에는 캐시데이터를 재사용할 수 있게 해준다.
이렇게 정리를 해보았는데요, 궁금한 점이 있습니다! (+ 위 정리 내용이 정확할까요?)
위 설명대로라면 캐시 데이터의 유효시간이 초과된 경우에도, 캐시저장소에는 유효시간이 지난 캐시데이터가 존재해야 하는거잖아요, 그렇다면 '유효시간'이라는 것은 무엇을 의미하는 건가요? 캐시데이터의 유효시간이 지나면 바로 캐시저장소에서 해당 캐시데이터가 소멸된다고 생각했는데 그러니까 위 설명이 이해가 가지 않아서요,, 캐시저장소에서 유효시간이 지난 캐시데이터는 언제 소멸되는건가요?
답변 1
1
안녕하세요. 허은정님
생각하신 내용이 맞습니다.
추가로 질문하신 캐시저장소에서 유효시간이 지난 캐시데이터의 소멸 시기에 대해 설명드릴께요.
캐시 데이터 소멸 시기:
캐시 데이터는 여러 가지 이유로 저장소에서 제거될 수 있습니다. 예를 들어, 캐시 저장소가 꽉 찼을 때, 가장 오래되거나 자주 사용되지 않는 캐시 데이터부터 제거하는 방식(LRU - Least Recently Used 등의 알고리즘 사용)으로 공간을 확보할 수 있습니다.
또한, 클라이언트나 서버가 명시적으로 캐시를 무효화하는 경우(예: Cache-Control: no-cache 헤더 사용)에도 캐시 데이터가 제거될 수 있습니다.
유효시간이 지난 캐시 데이터는 자동으로 삭제되지 않고, 필요에 따라 검증을 거쳐 재사용되거나, 새로운 데이터로 대체되어 갱신될 때까지 유지될 수 있습니다.
결론적으로, 캐시 데이터의 유효시간이 지났다는 것은 자동으로 그 데이터가 캐시에서 삭제되는 것을 의미하지 않습니다. 대신, 이는 데이터가 더 이상 확실하게 신뢰할 수 없으며, 재사용하기 전에 서버의 검증이 필요함을 의미합니다. 참고로 캐시에 대한 삭제 정책은 웹 브라우저마다 다릅니다. 추가로 웹 브라우저에서 캐시 정보를 직접 제거할 수도 있습니다.
감사합니다.
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
68
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
66
1
쿠키에 대해 질문드려요!
0
88
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
86
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
47
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
51
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
80
1
리소스 질문드립니다
0
55
1
IP 패킷 질문입니다.
0
58
1
html from, http api
0
74
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
98
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
139
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
144
1
다음 강의 커리큘럼 질문!!
0
130
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
90
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
139
1
PATCH를 사용하지 못할 때 왜 POST?
0
161
2
협상과 우선순위3 질문드립니다.
1
129
1





