[프로젝트 소개]
[기술스택]
[역할]
[고민한 문제 & 문제해결]
Next.js vs React
CSR보다 첫페이지 로딩이 빠른 SSR
숙박업소 플랫폼 특성상 SEO가 좋을수록 고객유치에 유리할거라 판단
이미지를 많이 사용하는 프로젝트 특성상 next에서 제공하는 이미지 컴포넌트를 사용하면
이미지 최적화가 가능
이러한 장점을 고려하여 러닝커브가 길지만 Next.js가 본 프로젝트에 더 적합하다고 생각했고
팀원들에게 의견을 제시했고 Next.js로 결정됨.
CSS 라이브러리
Next.js에서 css in js인 styled-component를 사용하게되면, 별도의 세팅을 통해 사용을 할 순 있지만
본 프로젝트에서 처음 접하는 기술스택이 많다보니 비용처리가 필요한 styled-component를 사용하지 않고, tailwind나 scss를 사용하자고 의견을 제시하였고 scss 로 결정됨.
[배운 점]
프로젝트를 진행할때 Next.js에서 권장하는 data fetching 방식인 fetch를 사용하지 않고, axios를 사용하게 되었음.
axios를 사용하게된 계기는, fetch보다 axios에서 axios intercepter 등 강력하고 편리한 기능들이 많이 있었지만, axios에서는 fetch의 option중 SSR과 SSG기능을 지원하는 cache 기능을 사용하지 못하지 않냐라는 의문이 있었지만 전 프로젝트에서 next.js를 사용하면서, axios에서도 header에 cache값을 넣어서 보내면 SSR과 SSG를 fetch와 똑같이 사용할 수 있다는 잘못된 지식을 가지고 있었음.
프로젝트 특성상 상품을 수정하거나 삭제하는 기능은 사용하지 않았고, 자주 변경되지 않으니 상세페이지에서는 SSR보다는 SSG가 더 적합하다고 판단하였고 axios를 사용하여 header의 값에 cache: force-cache를 넣어줌.
프로젝트 완성이후 네트워크과 서버요청을 보면서 위에서 설정한 cache값때문에 캐싱이 된다고 착각하였으나 이 주기가 동적으로 페이지 이동할때에는 30초 또는 정적으로는 5분마다 네트워크 탭에서는 rsc라는 파일을 받아오고 특정주기마다 요청되는 백엔드서버콘솔을 보고 의도한 캐싱이 아니라고 판단, 이에대한 이유를 찾아보았으나 next.js에서의 axios에 관한 레퍼런스가 많이 없었음.
공식문서를 찾다보니 Next.js에서의 캐싱은 내가 기존에 알고있었던 data cache 이외에 총 4가지의 캐싱이 있었고, axios로 data cache를 하려면 특정한 설정을 해줘야 가능하였고, 기존에 설정했다고 했던것들은 해골물이였고 캐싱이 되던 이유는 data cache가 아닌 router cache 였음.
[개선할 점]
Next.js에서 axios를 사용한 SSR,SSG data fetching를 사용하려면 설정 또는 fetch로 변경
router Cache를 무효화 할 수 있는 방안으로 의도하지 않는 캐시문제 개선
[배운 점]
Next.js에서 data cache만 있는것이 아닌 여러가지 cache에 대해 배움.
Next.js에서 axios를 사용하려면 특정 설정을 해줘야 함.
[프로젝트 느낀 점]
[성과]