Optimistic-UI
좋아요를 눌렀으면 백엔드로 가서, DB의 엑셀에 저장하고 받아와서 브라우저에 띄우는게 정상인데
"어차피 받아올것"임을 전제로 거의 딜레이 없이 바로 화면에 좋아요를 띄우게 된다.
- 인터넷이 느린곳에서 특히 효과적임
- 실제로 빠른게 아니라 "빠르게 보이는" 눈속임
- 남용하지 말기!!!!
- 백엔드 서버로 요청을 하면 자료를 받아올 확률이 99% 이상 성공가능성이 보장되어야함!!!
가짜로 입력한 값과 나중에 들어온 값과 비교해서 같으면 그대로 하고 다르면 다시 바꿔치기함
느리면 눈속임이라도??
좋아요버튼 누르면 좋아요 숫자 증가
백엔드에 데이터 보내고 받아오기, 리페치하기 해야함 -> 느림
먼저 숫자만 올려놓고 DB에 보내고 받아와서 일치하면 그대로 두는 방법
실패할 가능성이 매우 낮은 경우 이렇게 눈속임하면 빠름(가짜 좋아요를 만듦) -> Optimistic-UI
response를 두번 받음
한번은 가짜, 한번은 진짜
서버사이드렌더링 (oepnGraph 미리보기 기능과 연결됨)
- 전세계의 페이지를 일일이 다 만들 수 없음!!!
미리보기의 네이버 이미지는 네이버 개발자가, 미리보기의 다음 이미지는 다음 개발자가 만들었다.- 이것들을 보여주는(네이버에서 스크래핑 해서 미리보기를 보여주는) 회색 배경 및 글자 등 css는 디스코드 개발자가 만들었음
<meta property="og:url" content="//www.daum.net/">
<공부해야하는 순서>
1️⃣스크래핑
2️⃣크롤링
3️⃣openGraph
4️⃣서버사이드 렌더링
백엔등 fetchBoard하면 JSON(객체)형태로 데이터를 되돌려준다.
예전에는 XML형식(비효율적)으로 데이터를 받아왔지만!
현재는 JSON형식으로 좀 더 간편하게 데이터를 받아오고있다!
처음 특정페이지에 접속하면 html, css, js를 먼저 다운받아와서 화면에 그려지고, ⭐️그 이후에⭐️ useQuery가 실행되어서 철수, 학교, 나이가 받아와진다. 그래서 data가 없을 수 있기 때문에 옵셔널체이닝(data?.fetchBoard.name)을 해주었었음<meta property="og:title" content="data.fetchboard.content" />
브라우저를 처음 실행했을때는 query는 첫요청으로 받아올 수 없기 때문에 요청을 해도 빈값으로 나오게됨
메인페이지에서 바뀌지 않는 부분 예를 들면 "나만의 사이트에 오신것을 환영합니다"는 정적으로 하드코딩하도 괜찮음. ‼️하지만 상세페이지와 같이 동적으로 데이터가 바뀌는 페이지는 메타태그에 동적으로 코드를 작성해주어야한다.
그런데 useQuery를 이용해서 메타태그를 작성해주면 스크롤링 해왔을때 안보이는 문제가 발생한다!!!!!
SSR
- 그래서 동적으로 코드를 작성해주어야 할때는 조금 다른 방식이 필요함
- useQuery를 프론트엔드 서버에서 실행후 받아와서 최종적으로 보내주게되면 브라우저에서 useQuery할 필요 없고 내용들이 다 들어있게된다.
애초에 프론트엔드에서 다 그리고 난 뒤에 결과를 돌려주는 방식을 SSR(서버사이드렌더링)이라고 한다.- 기존의 useQuery말고 getServerSideProps라는 명령어를 사용
- 페이지별로 SSR을 적용할 필요성이 있는지를 판단해야함
SEO(Search Engine Optimization)