캐시 stale 질문입니다.
안녕하세요 강의 감사합니다. 잘듣고잇습니다.
헤더에서 처음보는 값이 잇는데
x-nextjs-cache:STALE
hit는 알겟습니다. stale이 라고 표기되는 기준이 무엇인가요?
서버의 최신 값이 아닌걸 어떻게 알죠?
revalidate 되기 전에는 hit 로 표기되고
revalidate 되는 동안에는 stale 표기가 되는 건가요?
그리고 추측이 맞다면 revalidate 되는 동안이라는건
서버에 다시 요청보내고 응답받을때 까지를 말하는게 맞을까요?
(* 여기는 읽으실 필요 없습니다. 질문이랑 같이 메모한거에요
그리고 revalidate 되었는데 값이 안바뀌면
캐시는 stale이라하더라도 e-tag로 2차 검증하고 태그 값이 같아서 그래도 사용한다 (강의 내용 그대로)
값이 바뀌면 hit 되고 e-tag값도 갱신한다. )
답변 1
0
안녕하세요. 질문 감사합니다.
getStaticProps 강의 5:55부터 설명이 되어있는데 글로 풀어서 최대한 설명드리겠습니다.
revalidate: 5초로 설정하면 HTML header에는 'Cache-Control: s-maxage=5, stale-while-revalidate'가 추가됩니다.
HTML을 pre-render(generate)한 시점부터 0~5초까지는 캐시된 문서를 응답하며 HIT(fresh, valid)됩니다. 하지만 generate를 한 시점부터 5초가 지나면 캐시는 stale(not fresh, expired) 상태로 들어갑니다.
그 뒤 어떤 사용자가 페이지에 들어와 HTML을 요청하면, 일단 바로 stale 상태의 HTML을 응답합니다. 하지만 이것은 더이상 valid하지 않기 때문에, 서버는 revalidate 로직을 실행합니다.(즉 getStaticProps 함수를 재실행(보통 API 요청을 하거나, json 파일을 가져오는 등 데이터 관련 작업)) 이 때, revalidate를 하는 시간이 소요됩니다. 강의에서는 setTimeout을 이용해 이 과정에 2초가 걸리도록 설계했습니다.
따라서 'revalidate 되는 동안'이라는 것은 getStaticProps를 실행해 새롭게 pre-render을 하는 약 2초의 시간을 의미합니다.(서버에 요청을 보내고 응답을 받는데 걸리는 시간과는 다름)
시간 순서대로 다시 정리하면, HTML generate 후
0~5초: HIT
5초~사용자 A의 요청 시점: STALE
사용자A의 요청 시점~'+2초'(데이터를 revalidate 하는 시간): STALE, revalidate 수행
'+2초'(revalidate 완료)~다음 5초: HIT
와 같은 사이클을 거칩니다.
더 자세한 이해를 하고 싶으시다면 다음 문서를 읽어보시면 좋을 것 같습니다! (https://web.dev/stale-while-revalidate/)
감사합니다 :)
API 라우터를 사용해야 하는 경우에 대해
1
150
1
키보드 어떤 거 사용하시나요
1
352
1
next.js 멀티플 런타임 관련해서 질문 올립니다..
1
358
2
아주 기초적인 질문입니다.
1
322
1
서버사이드 렌더링을 할 때, 서버는 어디에 있는 건가요?
1
1170
2
수업을 듣다가 SSR에 관하여..
1
551
2
interface 와 type
1
376
1
엘리맨트들의 자식관계가 어떻게 이렇게 되나 궁금합니다.
1
384
1
onLoad함수 (script태그의 onLoad X)
1
426
1
dynamic에 대한 질문
1
447
1
SSR vs SSG
1
476
2
NoSSR 관련한 질문입니다:)
1
376
1
a tag 질문 !
1
327
2
8분 20초 배포 관련
1
324
2
안녕하세요! 구글 서치 콘솔에 등록하는 도중 다음 오류가 뜹니다
0
2679
2
emotion styles 파일이 빌드시 경고로 뜹니다.
1
438
1
naver map 이 출력되지 않습니다.
1
481
1
페이지에 site맵 존재시 next Link는 csr 처럼 싹가져오게 되나요?
1
264
2
Failed to load resource: the server responded with a status of 404 ()
1
1034
2
VSCode 익스텐션 궁금합니다.
1
357
1
상태관리 질문 있습니다!
1
450
1
swr에 대한 질문입니다. (용어 관련)
1
374
1
swr 질문입니다!
1
338
1
안녕하세요. span 태그의 부모에 display: flex 를 적용하는데 왜 적용되는지 아무리 생각해도 이해가 되지 않아 질문드립니다.
1
681
2





