강의

멘토링

로드맵

Inflearn Community Q&A

dogmnil20074517's profile image
dogmnil20074517

asked

Next + Create a SNS service with React Query

Reasons for using react-query and fresh, stale, inactive

seo 최적화 기준은 데이터 fetching인가요 아님 데이터 렌더링인가요?

Written on

·

44

0

seo 관련해서 궁금한게 있습니다.

seo 최적화라는게 크롤링 봇이 서버에서 렌더링된 html을 크롤링하고 인덱싱하는걸로 알고 있습니다.

만약 서버 fetch 를 했지만 data 자체는 렌더링하지 않은 경우는 크롤링 봇이 어떻게 인식을 하는지 궁금합니다.

예를 들어 서버 fetch를 했지만 아래와 같이 서스펜스 역할하는 로직으로 인해 클라이언트 환경에서 hydrate 된 이후에 데이터가 렌더링된다면 서버에서 fetch는 이루어졌지만 렌더링된건 아니기 때문에 크롤링봇이 데이터를 인식하지 못하게 되는걸까요??

 

export function ConditionalClientWrapper({
  children,
  fallback,
}: ConditionalClientWrapperProps) {
  const [mounted, setMounted] = useState(false);

  useEffect(() => {
    setMounted(true);
  }, []);

  if (!mounted) return fallback ?? null;
  return children;
}

 

 <ConditionalClientWrapper fallback={<Loading />}>
  //dataList에서 서버 fetch 가 이루어집니다. 
        <dataList />
 </ConditionalClientWrapper>

 

SEO 최적화를 위한 조건이 데이터 렌더링인지 단순 서버 fetch 만하면 되는건지 궁금합니다.

 

추가로 리액트 쿼리의 prefetch를 사용하면 seo 최적화를 가질 수 있는건가요??

 

감사합니다!

reactnext.jsreact-querynext-authmsw

Answer 2

0

zerocho님의 프로필 이미지
zerocho
Instructor

렌더링 기준입니다. 화면에 html로 그려져야 합니다. 구글 봇 같은 경우는 fetch suspense를 기다려주기도 합니다.

dogmnil20074517님의 프로필 이미지
dogmnil20074517
Questioner

그렇군요. 그럼 제가 제시한 코드는 seo 최적화를 가져갈 수 없는 코드였군요. 답변 감사합니다!

zerocho님의 프로필 이미지
zerocho
Instructor

Seo는 메타 태그만 잘 심어두셔도 충분하긴 합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 변재정님~

SEO와 관련하여, 서버에서 데이터를 fetch하는 것과 해당 데이터를 HTML로 렌더링하는 것에 대한 차이를 명확히 이해하는 것이 중요합니다. SEO에 최적화된 페이지는 주로 검색 엔진의 크롤러가 쉽게 접근하고 인덱싱할 수 있는 HTML 컨텐츠를 제공합니다.

  1. 서버 Fetch vs. 데이터 렌더링:

    • 서버에서 데이터를 fetch하는 것 자체는 SEO 최적화에 직접적인 영향이 없습니다. 중요한 것은 서버에서 데이터를 fetch한 후, 그것을 HTML로 렌더링해서 클라이언트에 전송했는지 여부입니다.
    • 크롤링 봇은 주로 서버에서 이미 완성된 HTML을 인덱싱하기 때문에, 데이터가 서버에서 fetch된 후 클라이언트 사이드에서만 렌더링된다면, 크롤링 봇은 해당 데이터를 인식하지 못할 가능성이 높습니다.
  2. Suspense와 서스펜스 역할:

    • 위의 코드처럼 Suspense 역할을 통해 클라이언트에서만 데이터가 완료되어 보이는 경우, SEO 관점에서는 불리할 수 있습니다. 프리렌더된 HTML이 검색 엔진에 노출되어야 하기 때문입니다.
  3. React-query의 prefetch:

    • prefetchQuery를 사용하면 데이터를 미리 서버에서 가져올 수 있지만, SEO 최적화를 위해서는 이 데이터를 서버 사이드에서 HTML로 렌더링하여 클라이언트에 전송하여야 합니다.
    • 이를 위해 Next.js에서 getServerSideProps 또는 getStaticProps를 활용하여 서버 사이드 렌더링을 활용하는 방법이 권장됩니다. 이 경우 검색 엔진이 미리 구성된 HTML을 가져가므로, SEO에 유리합니다.

해당 내용에 대해 더 깊이 이해하고 싶다면, 아래의 링크에서 유사한 주제를 다룬 답변을 참고하실 수 있습니다.
- pre rendering 과 data fetching 질문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dogmnil20074517's profile image
dogmnil20074517

asked

Ask a question