받은 지 11초 된 웹 응답, 캐시에서 세는 나이는 왜 30초일까요?

받은 뒤 흐른 시간만 세면 충분할까요? 응답의 기존 나이와 요청·수신 사이의 시간을 더해, 29초와 30초의 신선도 판정 카드를 구별해요.

창가 책상 위 빈 격자 화면의 노트북과 종이, 연필

이미지: AI 생성 · 수학 이야기

웹 응답을 저장했다가 다시 쓰는 캐시는 응답의 ‘나이’를 따진다. 받은 지 11초이고 허용 나이가 30초라면 아직 신선할까요? 아래 기록을 한 시간선에 붙여 판단해 볼까요? 모든 시각은 같은 기준의 초이며 실제 사이트 측정값은 아니에요.

응답 날짜는 0초, 요청은 15초, 수신은 19초예요. 응답의 Age 값은 15초이고 max-age는 30초예요. 다른 신선도 지시의 우선순위나 오래된 응답의 특별한 재사용 허가는 이 사례에서 다루지 않아요.

수신 시 날짜로 센 나이는 19−0=19초예요. Age에는 요청부터 수신까지의 19−15=4초를 더해요. 이 사례는 두 값 중 큰 값을 초기 나이 R로 써요. 두 계산 모두 19초여서 어느 값을 택해도 같아요.

R=max⁡{19−0, 15+(19−15)}=19.R=\max\{19-0,\ 15+(19-15)\}=19.

현재 시각을 t, 응답의 전체 나이를 C(t)라 해 볼까요? 수신 뒤 저장된 시간은 t−19초이므로 다음처럼 더해요. 여기서는 t≥19입니다.

C(t)=19+(t−19),C(29)=29<30,C(30)=30.C(t)=19+(t-19),\qquad C(29)=29<30,\quad C(30)=30.

신선 판정은 30>C(t)라는 엄격한 일차부등식이에요. 따라서 29초에는 신선, 30초에는 신선하지 않다는 카드를 붙여요. 받은 뒤 흐른 시간은 각각 10초와 11초여도, 허용 나이는 수신 때부터 새로 시작하지 않아요. Age 값 15에 저장 시간 11만 더한 26은 요청·수신 사이 4초를 빠뜨린 계산이에요.

시간선에는 0→15→19→29→30을 표시하고, ‘수신 뒤 경과시간’과 ‘전체 나이’를 다른 색으로 적어 볼까요? 이 답은 지정한 신선도 식의 판정이에요. 30초에 파일이 삭제되거나 화면이 자동 갱신된다는 뜻은 아니에요.

출처·착안: IETF RFC9111, HTTP Caching 4.2·5.1·5.2.2.1. 알려진 신선도 계산을 바탕으로 시간 기록과 두 판정 시점을 새로 정했다.

출처·착안: RFC9111 HTTP Caching (June2022)

이 글 공유하기

개인정보 및 방문 통계 안내