용어집
SEO

다이내믹 렌더링

다이내믹 렌더링은 검색 봇에게는 서버에서 사전 렌더링한 정적 HTML을, 일반 사용자에게는 JavaScript로 동작하는 원래 버전을 따로 제공하는 기법입니다. 한때 JavaScript 콘텐츠의 색인 문제를 해결하기 위한 우회책으로 쓰였으나, 현재 구글은 장기적 해법으로 권장하지 않습니다.

  • 다이내믹 렌더링은 요청한 클라이언트의 User-Agent를 식별해, 검색 봇에는 사전 렌더된 정적 HTML을, 사용자에는 일반 JavaScript 버전을 분리 제공하는 기법입니다.
  • JavaScript로 생성되는 콘텐츠가 크롤러에서 제대로 색인되지 않던 시절의 우회책으로 등장했습니다.
  • 구글은 현재 이를 "임시 우회책이며 장기적 해법이 아니다"라고 명시하고, 대신 서버 사이드 렌더링(SSR), 정적 렌더링, 하이드레이션을 권장합니다.
  • 봇과 사용자에게 서로 다른 콘텐츠를 내보내는 구조여서 운영 복잡도와 리소스 부담이 크고, 동일 콘텐츠 제공 원칙과 어긋날 수 있습니다.
  • 서버 사이드 렌더링과는 구분되는 개념입니다. SSR은 모든 방문자에게 동일하게 서버 렌더 결과를 제공하지만, 다이내믹 렌더링은 봇과 사용자를 갈라 서로 다른 응답을 보냅니다.

개요

다이내믹 렌더링(Dynamic Rendering)은 동일한 URL에 대해 요청 주체에 따라 두 가지 응답을 내보내는 방식입니다. 검색 엔진 크롤러에게는 서버 측에서 미리 렌더링해 둔 정적 HTML을 전달하고, 실제 사용자에게는 브라우저에서 JavaScript가 실행되는 원래 버전을 그대로 전달합니다.

이 기법은 싱글 페이지 애플리케이션(SPA)처럼 콘텐츠 상당 부분이 클라이언트 측 JavaScript로 생성되는 사이트에서, 크롤러가 JavaScript를 충분히 처리하지 못해 본문이 빈 채로 색인되던 문제를 우회하기 위해 등장했습니다.

작동 방식

구글 공식 문서에 따르면 다이내믹 렌더링은 다음 흐름으로 동작합니다.

  • User-Agent 식별: 웹 서버가 들어온 요청의 User-Agent를 검사해 검색 봇 요청인지 일반 사용자 요청인지 판별합니다.
  • 라우팅 분기: JavaScript를 처리하지 못하거나 특정 기능이 필요한 크롤러의 요청은 렌더링 서버로 보내고, 그 외 사용자와 정상 크롤러 요청은 평소처럼 처리합니다.
  • 정적 HTML 응답: 렌더링 서버가 동적 콘텐츠를 정적 HTML로 변환해 크롤러에 응답하며, 사용자에게는 JavaScript가 실행되는 원래 페이지가 제공됩니다.

구글의 현재 입장

구글은 다이내믹 렌더링을 더 이상 권장하지 않습니다. 공식 문서 제목 자체가 "Dynamic Rendering as a workaround(우회책으로서의 다이내믹 렌더링)"으로 바뀌었고, 상단에 "다이내믹 렌더링은 검색 엔진에서 JavaScript 생성 콘텐츠 문제를 해결하기 위한 우회책이었으며 장기적 해법이 아니다(Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines)"라는 경고가 명시되어 있습니다.

구글이 제시하는 대안은 다음 세 가지입니다.

  • 서버 사이드 렌더링(SSR): 서버에서 페이지를 렌더링한 뒤 봇과 사용자 모두에게 동일하게 제공합니다.
  • 정적 렌더링: 빌드 시점에 페이지를 미리 렌더링해 정적 파일로 제공합니다.
  • 하이드레이션: 초기 HTML을 먼저 내려보낸 뒤 JavaScript가 상호작용을 덧입히는 방식입니다.

다이내믹 렌더링이 권장되지 않는 이유는 봇과 사용자에게 서로 다른 콘텐츠를 내보내는 구조 자체가 운영 복잡도와 별도 렌더링 서버라는 리소스 부담을 만들고, 두 응답의 콘텐츠가 어긋날 위험을 안고 있기 때문입니다. 구글은 모든 방문자에게 일관된 콘텐츠를 제공하는 모던 렌더링 방식을 우선해야 한다고 안내합니다.

서버 사이드 렌더링과의 구분

다이내믹 렌더링은 서버 사이드 렌더링과 혼동되기 쉬우나 핵심이 다릅니다. 서버 사이드 렌더링은 봇과 사용자를 구분하지 않고 모두에게 동일한 서버 렌더 결과를 제공합니다. 반면 다이내믹 렌더링은 User-Agent로 요청 주체를 갈라 봇에는 정적 HTML, 사용자에는 JavaScript 버전이라는 서로 다른 응답을 반환합니다. 따라서 다이내믹 렌더링은 SSR의 하위 형태가 아니라, 분기 처리를 전제로 한 별개의 우회 기법입니다.

참고 및 출처

관련 용어