개발자
현재 서버에서 하루 단위로 DB데이터를 업데이트하고 있습니다. 거기에 맞춰 프론트단에서도 하루 단위로 갱신된 데이터를 보여주기 위해 api fetch옵션인 `{ next: {revadliate : 36000} }` 을 설정해 두었습니다. 그런데 revalidate로 설정한 시간이 지나도 화면에 나타나는 데이터가 갱신되지 않아요... 개발 환경에선 업데이트 된 데이터가 나오다가도 배포 페이지에선 이전 데이터가 나오는거 같아요. (배포는 aws로 했습니다) 서버 db 데이터는 잘 업데이트 되고있는걸 확인했습니다. 혼자서 자료를 아무리 찾아봐도 원인과 해결법을 모르겠어서 도움 요청합니다ㅠㅠ fetch 코드와 fetch를 호출하는 코드도 함께 첨부합니다.
답변 1
안녕하세요 답변 드립니다 😏 개발 환경에서 정상 작동한다면 배포 환경의 캐싱 데이터가 아직 존재할 수 있습니다. https://www.smileshark.kr/post/how-to-set-cachecontrol-header-in-amazon-cloudfront 혹시 AWS에서 Cloudflare나 다른 캐싱 서비스 (Redis)등을 제공하는 서비스와 연결되어 있으실 것 같은대 해당 부분에서 캐싱 데이터가 업데이트되지 않아 발생하는 문제일 확율이 높습니다. 혹은 Next의 버전에 따라 SSG나 ISR을 사용하셨다면 재갱신 주기를 설정하거나 빌드 시 html 파일이 이미 완성된 상태라 구조 자체를 다시 확인하셔야 할 수 있습니다.
익명
작성자
2024년 02월 29일
안녕하세요 답변 감사합니다! aws에서는 E2C로 단순 배포만 하였고 cludflare, redis 등을 사용하지 않은거 같아요. 제가 배포했지만 aws를 잘 모른채 그냥 따라한거라.. 복잡한 기능은 사용하지 않은 것 같습니다. 컴포넌트가 ssg, isr인지 확인하기 위해 build해보았는데 람다 아이콘(Dynamic)이 뜹니다. 문득 든 생각인데 혹시 fetch를 실행하는 컴포넌트가 SSR인게 이유일수도 있을까요?

백승훈
프론트 엔드 개발자 (FE) • 2024년 02월 29일
좀더 정확하게 확인해보기 위해선 배포시 통신의 결과값을 먼저 확인해보세요 백엔드와 Rest API 통신 및 CSR환경이면 통신 응답을 보실 수 있으실꺼고 그 응답에 제대로된 값이 들어오는지 보시면됩니다. SSR 환경이면 서버에서 그려줄 때 캐싱된 이전값을 불러와 사용하거나 할 가능성도 있습니다. 자세한건 저도 코드랑 사이트를 봐야 아는거라 일단 해당 항목부터 점검해보세요😏
익명
작성자
2024년 03월 28일
알고보니 revalidate는 잘 동작하는데 서버쪽 DB업데이트 시간과 제가 설정한 revalidate시간 차이때문에 업데이트되지 않아보였던 버그(?)였습니다! 답변감사했습니다😊
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!