본문으로 건너뛰기
피드

Googlebot 내부 동작 공식 공개 — 2MB 제한, WRS 무상태 렌더링, 바이트 처리의 모든 것

frontend 약 4분
vote
0
댓글
북마크

Google이 Googlebot의 크롤링 인프라를 상세 공개. URL당 2MB(헤더 포함) 제한, 참조 리소스 별도 카운터, WRS의 무상태 렌더링 등 지금까지 모호했던 동작을 명확히 설명하고 실무 권장사항 제시.

  • 1

    URL당 2MB 제한 (헤더 포함), PDF는 64MB

  • 2

    2MB 초과분은 fetch/렌더링/인덱싱 전부 안 함

  • 3

    참조 리소스(JS/CSS)는 별도 URL로 별도 2MB 카운터

  • 4

    WRS는 stateless — 로컬 스토리지/세션 초기화

  • Google이 Googlebot의 크롤링과 바이트 처리 메커니즘을 공식적으로 상세 공개함 — 지금까지 모호했던 부분들이 명확해짐

Googlebot은 단일 프로그램이 아님

  • 2000년대 초에는 크롤러가 하나였지만, 지금은 Googlebot이 "중앙 크롤링 플랫폼"의 한 클라이언트에 불과
    • Google Shopping, AdSense 등 수십 개 클라이언트가 같은 인프라를 공유하되 다른 크롤러 이름을 사용
    • 서버 로그에 보이는 Googlebot은 Google Search만 해당

2MB 제한의 실체

  • Googlebot은 개별 URL당 최대 2MB만 가져감 (PDF는 64MB)
    • HTTP 헤더도 포함한 2MB임
    • 2MB를 넘으면 거부하는 게 아니라 정확히 2MB에서 끊음 — 나머지는 아예 fetch하지 않고, 렌더링하지 않고, 인덱싱하지 않음
    • 이미지/비디오 크롤러는 제품별로 다른 임계값 사용, 별도 지정 없으면 기본 15MB

💡

> HTML 내 참조 리소스(JS, CSS 등)는 각각 별도 URL로 별도 2MB 카운터를 가짐 — 부모 페이지 크기에 포함되지 않음. 미디어, 폰트, 일부 특수 파일은 WRS가 요청하지 않음.

  • 대부분의 웹에서 HTML 2MB는 거대한 크기이므로 보통은 문제없음
    • 하지만 인라인 base64 이미지, 거대한 인라인 CSS/JS, 메가바이트급 메뉴가 앞에 있으면 실제 텍스트 콘텐츠가 2MB 뒤로 밀릴 수 있음
    • 밀린 바이트는 Googlebot에겐 "존재하지 않는 것"

Web Rendering Service (WRS)

  • 크롤러가 가져온 바이트를 WRS가 처리 — 모던 브라우저처럼 JS 실행, CSS 처리, XHR 요청
    • 이미지/비디오는 요청하지 않음
    • WRS는 무상태(stateless) — 요청 간 로컬 스토리지, 세션 데이터 초기화
    • JS 의존적인 동적 요소에 영향을 줄 수 있음

실무 권장사항

  • 무거운 CSS/JS를 외부 파일로 분리 — 외부 리소스는 별도 fetch
  • <meta>, <title>, <link>, canonical, 구조화 데이터 같은 핵심 요소를 HTML 상단에 배치
  • 서버 응답 시간 모니터링 — 느리면 Googlebot이 자동으로 크롤 빈도를 줄임
  • 이 2MB 제한은 고정이 아니며 웹 진화에 따라 변경될 수 있음

기술 맥락

  • 2MB 제한이 HTTP 헤더를 포함한다는 건 실무적으로 꽤 중요한 포인트예요. 큰 쿠키나 커스텀 헤더가 많은 사이트에서는 실제 HTML에 쓸 수 있는 바이트가 줄어드니까요
  • WRS가 stateless라는 건 SPA(Single Page Application)에 직접적인 영향이 있어요. 로컬 스토리지에 인증 토큰을 저장하고 그걸 기반으로 콘텐츠를 로드하는 패턴이라면, WRS에서는 빈 페이지로 보일 수 있거든요
  • 참조 리소스가 별도 카운터를 갖는다는 건, JS 번들이 크더라도 HTML 자체의 2MB에는 영향을 주지 않는다는 뜻이에요. 다만 JS 번들 자체도 2MB 제한이 적용되니 코드 스플리팅이 SEO 관점에서도 의미가 있음

대부분의 사이트에서 2MB는 문제없지만, 인라인 에셋이 많거나 거대한 SPA에서는 핵심 콘텐츠가 크롤링 범위 밖으로 밀릴 수 있음. SEO 담당자뿐 아니라 프론트엔드 개발자도 알아야 할 내용.

댓글

댓글

댓글을 불러오는 중...

frontend

타입스크립트 7.0, Go 네이티브 포팅으로 빌드가 8~12배 빨라졌다

마이크로소프트가 타입스크립트 7.0을 출시하면서 기존 자바스크립트 기반 구현을 Go로 네이티브 포팅했다. 전체 빌드는 평균 8~12배 빨라졌고, VS코드 빌드는 125.7초에서 10.6초로 줄었으며, 슬랙은 CI 타입 검사 시간을 7.5분에서 1.25분으로 낮췄다.

frontend

타입스크립트 7 공개, 고 포팅으로 빌드가 최대 10배 이상 빨라짐

마이크로소프트가 고(Go)로 네이티브 포팅한 타입스크립트 7을 공개했다. 전체 빌드는 보통 8~12배 빨라지고, VS 코드 코드베이스에서는 125.7초가 10.6초로 줄었으며, 편집기 첫 오류 표시도 17.5초에서 1.3초 미만으로 내려갔다.

frontend

“98% 지원”이 생각보다 별로 안 넉넉한 이유

브라우저 기능 지원률 98%는 얼핏 높아 보이지만, 실제 서비스에서는 2%의 사용자를 깨진 화면 앞에 세우는 숫자일 수 있다는 글이다. 특히 일반 통계와 내 서비스 방문자 분포는 다를 수 있고, 실제 사례로 어떤 사이트는 최신 중첩 CSS 기능 지원 브라우저가 방문자의 약 70%뿐이었다.

frontend

메타, AI가 읽고 쓰는 디자인 시스템 ‘Astryx’ 오픈소스로 공개

메타가 내부 디자인 시스템 Astryx를 오픈소스로 공개했다. React와 StyleX 기반의 150개 이상 접근성 지원 컴포넌트, 디자인 토큰, 테마, 템플릿, CLI를 제공하며, 특히 AI 에이전트가 컴포넌트 구조를 이해하고 UI를 생성·수정할 수 있도록 MCP 서버까지 포함한 점이 핵심이다.

frontend

shadcn/ui, 기본 컴포넌트 라이브러리를 Radix에서 Base UI로 변경

shadcn/ui가 새 프로젝트의 기본 컴포넌트 라이브러리를 Radix가 아니라 Base UI로 바꿨어. Radix 지원은 계속되지만, Base UI가 안정화됐고 주간 다운로드 600만 이상, shadcn/create 신규 프로젝트 선택 비율 2대1이라는 이유로 기본값을 바꾼 거야. 동시에 채팅 UI용 MessageScroller와 관련 컴포넌트, headless 패키지인 @shadcn/react도 공개됐어.