크롤링 예산 관리를 위한 대규모 사이트 소유자 가이드
이 가이드에서는 매우 크고 자주 업데이트되는 사이트의 Google 크롤링을 최적화하는 방법을 설명합니다.
사이트에 빠르게 변경되는 페이지가 많지 않거나 페이지가 게시된 당일에 크롤링되는 것 같다면 이 가이드를 참조하지 않아도 됩니다. 사이트맵을 최신 상태로 유지하고 정기적으로 색인 생성 범위를 확인하는 것만으로 충분합니다.
한동안 사용 가능했지만 색인이 한 번도 생성되지 않은 콘텐츠가 있다면 문제가 달라집니다. 대신 URL 검사 도구를 사용하여 페이지의 색인이 생성되지 않은 이유를 알아보세요.
가이드의 대상 독자
이 가이드는 고급 가이드이고 대상은 다음과 같습니다.
- 대규모 사이트: 고유한 페이지 수가 1백만 개 이상이며 콘텐츠가 적당한 간격으로 변경됨(1주일에 한 번)
- 중간 규모 이상 사이트: 고유한 페이지 수가 1만 개 이상이며 콘텐츠가 매우 빠르게 변경됨(매일)
- 전체 URL 중 상당 부분이 Search Console에서 발견됨 - 현재 색인이 생성되지 않음으로 분류된 사이트
크롤링 일반 이론
웹 공간은 거의 무한하므로 사용할 수 있는 모든 URL을 탐색하고 색인을 생성하는 Google의 능력을 넘어섭니다. 따라서 Googlebot이 단일 사이트를 크롤링하는 데 쓸 수 있는 시간에는 제한이 있습니다. Google에서 사이트를 크롤링하는 데 쓰는 시간과 리소스의 양은 일반적으로 사이트의 크롤링 예산이라고 합니다. 사이트에서 크롤링된 모든 항목에 반드시 색인이 생성되는 것은 아닙니다. 각 페이지를 평가, 통합하여 크롤링 후 색인을 생성할지 판단해야 합니다.
크롤링 예산은 크롤링 용량 한도와 크롤링 수요라는 두 가지 기본 요소로 결정됩니다.
크롤링 용량 한도
Googlebot은 서버에 과부하를 주지 않으면서 사이트를 크롤링하려고 합니다. 이를 위해 Googlebot은 크롤링 용량 한도를 계산합니다. 이 한도는 Googlebot이 사이트를 크롤링하는 데 사용할 수 있는 최대 동시 연결 수와 가져오기 사이의 지연 시간입니다. 이 계산을 통해 서버에 과부하를 주지 않으면서 중요한 모든 콘텐츠를 포함하게 됩니다.
크롤링 용량 한도는 다음 몇 가지 요인에 따라 올라가거나 내려갈 수 있습니다.
- 크롤링 상태: 사이트에서 한동안 응답을 빠르게 보내면 한도가 올라가므로 크롤링에 사용할 수 있는 연결이 많아집니다. 사이트의 속도가 느려지거나 서버 오류로 응답하면 한도는 내려가고 Googlebot이 크롤링을 줄입니다.
- Search Console에서 사이트 소유자가 설정한 한도: 웹사이트 소유자는 선택적으로 Googlebot의 사이트 크롤링을 줄일 수 있습니다. 한도를 높게 설정해도 크롤링은 자동으로 증가하지 않습니다.
- Google의 크롤링 한도: Google에는 머신이 많이 있지만 무한정 있지 않습니다. 가지고 있는 리소스를 바탕으로 선택해야 합니다.
크롤링 수요
Google에서는 일반적으로 다른 사이트와 비교하여 사이트 크기, 업데이트 빈도, 페이지 품질, 관련성을 고려하여 사이트를 크롤링하는 데 필요한 만큼 많은 시간을 사용합니다.
크롤링 수요를 판단하는 데 중요한 역할을 하는 요소는 다음과 같습니다.
- 인식된 인벤토리: 사용자의 안내가 없으면 Googlebot은 사이트에서 인식하는 URL의 전부 또는 대부분을 크롤링하려고 합니다. 이러한 URL 중 다수가 중복되거나 다른 이유(삭제됨, 중요하지 않음 등)로 크롤링되지 않아야 한다면 사이트에서 Google 크롤링 시간을 많이 낭비하게 됩니다. 이 문제는 가장 분명하게 제어할 수 있는 요소입니다.
- 인기도: 인터넷에서 인기가 높은 URL은 Google 색인에서 최신으로 유지하기 위해 더 자주 크롤링되는 경향이 있습니다.
- 비활성: Google 시스템에서는 변경사항을 충분히 포착하도록 자주 문서를 다시 크롤링하려고 합니다.
또한 사이트 이동과 같은 사이트 전체 이벤트는 새 URL에서 콘텐츠의 색인을 다시 생성하기 위해 크롤링 수요의 증가를 유발할 수 있습니다.
요약
Google은 크롤링 용량과 크롤링 수요를 함께 고려하여 사이트의 크롤링 예산을 Googlebot이 크롤링할 수 있고 크롤링하려는 URL 집합으로 정의합니다. 크롤링 용량 한도에 도달하지 않더라도 크롤링 수요가 낮으면 Googlebot의 사이트 크롤링이 줄어듭니다.
권장사항
크롤링 효율성을 극대화하려면 다음 권장사항을 따르세요.
- URL 인벤토리 관리: 적절한 도구를 사용하여 크롤링할 페이지와 크롤링하지 않을 페이지를 Google에 알립니다. Google에서 색인 생성에 적합하지 않은 URL을 크롤링하는 데 너무 많은 시간을 소비하면 Googlebot은 사이트의 나머지 부분을 살펴보는 데 드는 시간이 가치가 없다고 판단하거나 예산을 늘려 나머지 부분을 살펴볼 수 있습니다.
- 중복 콘텐츠 통합. 중복 콘텐츠를 제거하여 고유한 URL이 아닌 고유한 콘텐츠에 크롤링을 집중합니다.
- robots.txt를 사용하여 URL 크롤링 차단. 사용자에게 중요한 페이지라고 해도 반드시 Google 검색결과에 표시될 필요는 없습니다. 예를 들어 링크된 페이지의 정보를 복제하는 무한 스크롤 페이지 또는 동일한 페이지의 다르게 정렬된 버전이 있습니다. 첫 번째 항목에서 설명한 대로 페이지를 통합할 수 없는 경우 robots.txt를 사용하여 검색에 중요하지 않은 이러한 페이지를 차단하세요. robots.txt를 사용하여 URL을 차단하면 URL의 색인이 생성될 가능성이 크게 줄어듭니다.
-
영구 삭제된 페이지의
404
또는410
상태 코드를 반환합니다. Google은 알고 있는 URL을 기억하지만404
상태 코드는 그 URL을 다시 크롤링하지 말라는 강력한 신호입니다. 그러나 차단된 URL은 크롤링 대기열에 훨씬 더 오래 남아 있으며 차단이 해제되면 다시 크롤링됩니다. soft 404
오류 제거.soft 404
페이지는 계속 크롤링되며 예산을 낭비합니다. 색인 생성 범위 보고서에서soft 404
오류를 확인합니다.- 사이트맵을 최신으로 유지. Google에서는 정기적으로 사이트맵을 읽습니다. 따라서 Google에서 크롤링하기를 바라는 모든 콘텐츠를 포함해야 합니다. 사이트에 업데이트된 콘텐츠가 있다면
<lastmod>
태그를 포함하는 것이 좋습니다. - 긴 리디렉션 체인 사용하지 않기. 크롤링에 부정적인 영향을 미칩니다.
- 로드하기 효율적인 페이지 만들기. Google에서 페이지를 더 빠르게 로드하고 렌더링할 수 있으면 사이트에서 더 많은 콘텐츠를 읽을 수 있습니다.
- 사이트 크롤링 모니터링. 크롤링 중에 사이트에 가용성 문제가 있는지 모니터링하고 크롤링 효율을 높일 수 있는 방법을 찾아보세요.
사이트의 크롤링 및 색인 생성 모니터링
다음은 사이트의 크롤링 프로필을 모니터링하는 주요 단계입니다.
- 사이트의 가용성 문제로 Googlebot에 문제가 발생했는지 확인하기
- 크롤링되지 않지만 크롤링되어야 하는 페이지가 있는지 확인합니다.
- 사이트의 일부분이 이전보다 훨씬 빨리 크롤링되어야 하는지 확인합니다.
- 사이트의 크롤링 효율성을 개선합니다.
- 과도한 사이트 크롤링을 처리합니다.
사이트의 가용성 문제로 Googlebot에 문제가 발생했는지 확인하기
사이트 가용성을 개선한다고 해서 크롤링 예산이 반드시 증가하는 것은 아닙니다. 앞서 설명한 대로 Google은 크롤링 수요에 기반하여 최적의 크롤링 속도를 결정합니다. 하지만, 가용성 문제로 인해 Google에서 원하는 만큼 사이트를 크롤링하지 못합니다.
진단:
크롤링 통계 보고서를 사용하여 Googlebot의 사이트 크롤링 기록을 확인하세요. 보고서는 Google에 사이트의 가용성 문제가 발생한 시기를 보여줍니다. 사이트의 가용성 오류 또는 경고가 보고되면 호스트 가용성 그래프에서 Googlebot 요청이 빨간색 한도를 초과한 인스턴스를 찾아 그래프를 클릭하여 어떤 URL이 실패하는지 확인하고 사이트의 문제와 이러한 URL의 상관관계를 알아봅니다.
URL 검사 도구를 사용하여 사이트의 몇 가지 URL을 테스트할 수도 있습니다. 도구에서 호스트 로드 초과 경고가 반환되면 Googlebot이 사이트에서 발견한 많은 URL을 크롤링할 수 없습니다.
처리:
- 크롤링 통계 보고서 문서를 읽고 가용성 문제를 찾아 처리하는 방법을 알아봅니다.
- 크롤링되지 않아야 하면 페이지가 크롤링되지 않도록 차단합니다. 인벤토리 관리를 참고하세요.
- 페이지 로드 및 렌더링 속도를 높입니다. 사이트의 크롤링 효율성 개선을 참고하세요.
- 서버 용량을 늘립니다. Google에서 게재 용량 한도로 일관되게 사이트를 크롤링하는 것 같지만 여전히 필요한 만큼 중요한 URL이 크롤링되거나 업데이트되지 않는 경우 게재 리소스가 더 많으면 Google에서 사이트의 페이지를 더 많이 요청할 수 있습니다. 크롤링 통계 보고서에서 호스트 가용성 기록을 검토하여 Google의 크롤링 속도가 한도에 자주 도달하는지 확인합니다. 자주 도달하면 한 달 동안의 게재 리소스를 늘려 같은 기간 크롤링 요청이 증가했는지 확인하세요.
크롤링되지 않는 사이트 일부분이 크롤링되어야 하는지 확인하기
Google은 찾을 수 있는, 사용자에게 가치 있고 고품질인 모든 콘텐츠의 색인을 생성하려고 사이트에서 필요한 만큼 많은 시간을 보냅니다. Googlebot이 중요한 콘텐츠를 누락하는 것 같다면 Googlebot이 콘텐츠를 알지 못하거나 콘텐츠가 Google에서 차단되었거나 사이트 가용성으로 인해 Google의 액세스가 제한되거나 Google에서 사이트에 과부하가 걸리지 않도록 하려는 것입니다.
진단:
Search Console은 URL 또는 경로로 필터링할 수 있는 사이트의 크롤링 기록을 제공하지 않지만 사이트 로그를 검사하여 Googlebot이 특정 URL을 크롤링했는지 확인할 수 있습니다. 크롤링된 URL의 색인 생성 여부는 또 다른 문제입니다.
대부분의 사이트에서는 새 페이지를 확인하는 데 최소 며칠이 걸립니다. 대다수 사이트에서는 URL의 당일 크롤링을 예상해서는 안 됩니다. 단, 뉴스 사이트와 같은 시간에 민감한 사이트는 예외입니다.
처리:
사이트에 페이지를 추가하는데 적절한 시간 내에 크롤링되지 않는다면 Google이 페이지를 알지 못하거나 콘텐츠가 차단되거나 사이트가 최대 게재 용량에 도달했거나 크롤링 예산이 없는 것입니다.
- Google에 새 페이지에 관해 알려줍니다. 사이트맵을 업데이트하여 새 URL을 반영합니다.
- robots.txt 규칙을 검토하여 실수로 페이지를 차단하고 있지 않은지 확인합니다.
- 크롤링 우선순위를 검토합니다(크롤링 예산을 현명하게 사용). 인벤토리를 관리하고 사이트의 크롤링 효율성을 개선합니다.
- 게재 용량이 부족하지 않은지 확인합니다. Googlebot은 서버에서 크롤링 요청에 응답하는 데 문제가 있다고 감지하면 크롤링을 줄입니다.
크롤링되었더라도 콘텐츠의 가치나 사용자 수요가 충분하지 않으면 페이지가 검색결과에 표시되지 않을 수 있습니다.
업데이트가 충분히 신속하게 크롤링되는지 확인하기
Google에서 사이트의 새 페이지나 업데이트된 페이지를 누락한다면 그 이유는 페이지가 표시되지 않았거나 페이지가 업데이트된 것을 확인하지 못했을 수 있습니다. 다음은 페이지 업데이트를 Google에서 인식하도록 도울 수 있는 방법입니다.
Google은 합리적으로 알맞은 시기에 페이지를 확인하고 색인을 생성하기 위해 노력하고 있습니다. 대다수 사이트에서는 3일 이상이 소요됩니다. 뉴스 사이트이거나 가치가 높고 극도로 시간에 민감한 다른 콘텐츠가 없다면 페이지를 게시한 당일에 Google에서 페이지의 색인을 생성한다고 예상하지 마세요.
진단:
사이트 로그를 검토하여 Googlebot이 특정 URL을 언제 크롤링했는지 확인합니다.
색인 생성 날짜를 알아보려면 URL 검사 도구를 사용하거나 업데이트한 URL을 Google에서 검색하세요.
처리:
해야 할 일:
- 사이트에 뉴스 콘텐츠가 있으면 뉴스 사이트맵을 사용합니다. 사이트맵이 게시되거나 변경된 경우 Google에 핑합니다.
- 사이트맵의
<lastmod>
태그를 사용하여 색인이 생성된 URL이 언제 업데이트되었는지 표시합니다. - 간단한 URL 구조를 사용하여 Google에서 페이지를 쉽게 찾도록 합니다.
- Google에서 내 페이지를 찾을 수 있도록 크롤링 가능한 표준
<a>
링크를 제공합니다.
피해야 할 사항:
- 변경되지 않은 동일한 사이트맵을 하루에 여러 번 제출.
- Googlebot이 사이트맵의 모든 내용을 크롤링하거나 즉시 크롤링한다고 예상. 사이트맵은 절대적인 요구사항이 아니라 Googlebot에 유용한 제안입니다.
- 사이트맵에 Google 검색에 표시하고 싶지 않은 URL을 포함합니다. 이렇게 하면 색인 생성을 원하지 않는 페이지에 크롤링 예산이 낭비될 수 있습니다.
사이트의 크롤링 효율성 개선
페이지 로드 속도 높이기
Google의 크롤링은 Googlebot 인스턴스의 대역폭, 시간, 가용성에 따라 제한됩니다. 서버에서 요청에 더 빠르게 응답하면 Google이 사이트에서 더 많은 페이지를 크롤링할 수 있습니다. 그러나 Google은 고품질의 콘텐츠만 크롤링하려고 하므로 품질이 낮은 페이지만 빠르게 만들면 Googlebot이 사이트를 더 많이 크롤링하지 않습니다. 반대로 사이트의 고품질 콘텐츠를 누락하고 있다고 판단되면 Google에서 예산을 늘려 고품질 콘텐츠를 크롤링할 수 있습니다.
다음은 크롤링을 위해 페이지와 리소스를 최적화할 수 있는 방법입니다.
- robots.txt를 사용하여 Googlebot이 크지만 중요하지 않은 리소스를 로드하지 못하도록 합니다. 중요하지 않은 리소스, 즉 페이지의 목적을 파악하는 데 중요하지 않은 리소스(예: 장식 이미지)만 차단해야 합니다.
- 페이지가 빠르게 로드되어야 합니다.
- 크롤링에 부정적인 영향을 미치는 긴 리디렉션 체인에 주의합니다.
- 이미지 및 스크립트와 같은 삽입된 리소스의 로드 및 실행 시간을 포함하여 서버 요청에 응답하는 시간과 페이지를 렌더링하는 데 필요한 시간이 모두 중요합니다. 색인 생성에 필요한 크거나 느린 리소스에 유의하세요.
HTTP 상태 코드로 콘텐츠 변경사항 지정
Google은 일반적으로 크롤링을 위한 If-Modified-Since
및 If-None-Match
HTTP 요청 헤더를 지원합니다. Google 크롤러는 모든 크롤링 시도에 헤더를 전송하지 않으며, 요청 사용 사례에 따라 다릅니다. 예를 들어 AdsBot은 If-Modified-Since
및 If-None-Match
HTTP 요청 헤더를 설정할 가능성이 더 큽니다. Google 크롤러가 If-Modified-Since
헤더를 전송하는 경우의 헤더 값은 콘텐츠가 마지막으로 크롤링된 날짜 및 시간입니다. 이 값을 기준으로 서버에서 응답 본문 없이 304 (Not Modified)
HTTP 상태 코드를 반환하도록 선택할 수 있으며 이 경우에 Google은 마지막으로 크롤링한 콘텐츠 버전을 다시 사용합니다. 콘텐츠가 If-Modified-Since
헤더에 크롤러가 지정한 날짜보다 최신인 경우에는 서버가 응답 본문과 함께 200 (OK)
HTTP 상태 코드를 반환할 수 있습니다.
요청 헤더와 관계없이 Googlebot이 마지막으로 URL을 방문한 이후로 콘텐츠가 변경되지 않은 경우에는 Googlebot 요청에 대한 응답 본문 없이 304 (Not Modified)
HTTP 상태 코드를 전송할 수 있습니다. 이렇게 하면 서버 처리 시간과 리소스가 절약되어 크롤링 효율성이 간접적으로 향상될 수 있습니다.
검색결과에 표시하고 싶지 않은 URL 숨기기
불필요한 페이지에 서버 리소스를 낭비하면 중요한 페이지에서 크롤링 활동이 줄어들 수 있으며 이로 인해 사이트에 있는 뛰어난 새 콘텐츠나 업데이트된 콘텐츠의 발견이 상당히 지연될 수 있습니다.
Google 검색의 크롤링을 원치 않는 URL을 사이트에서 많이 노출하면 사이트의 크롤링과 색인 생성에 부정적인 영향을 미칠 수 있습니다. 일반적으로 이러한 URL은 다음 카테고리로 분류됩니다.
- 속성 탐색 및 세션 식별자: 속성 탐색은 일반적으로 사이트의 중복 콘텐츠이고 단순히 페이지를 정렬하거나 필터링하는 세션 식별자와 기타 URL 매개변수는 새 콘텐츠를 제공하지 않습니다. robots.txt를 사용하여 속성 탐색 페이지를 차단하세요.
- 중복 콘텐츠: Google에서 불필요한 크롤링을 하지 않도록 중복 콘텐츠 식별을 돕습니다.
soft 404
페이지: 페이지가 더 이상 존재하지 않는 경우404
코드를 반환합니다.- 해킹된 페이지: 보안 문제 보고서를 확인하여 해킹된 페이지를 수정하거나 삭제해야 합니다.
- 무한 공간 및 프록시: robots.txt를 사용하여 크롤링되지 못하도록 차단합니다.
- 저품질 및 스팸 콘텐츠: 피하는 것이 분명 좋습니다.
- 장바구니 페이지, 무한 스크롤 페이지, 작업을 실행하는 페이지(예: '가입' 또는 '지금 구매' 페이지)
해야 할 일:
- Google에서 리소스나 페이지를 아예 크롤링하지 않도록 하려면 robots.txt를 사용합니다.
- 공통 리소스가 여러 페이지에서 재사용되는 경우(예: 공유 이미지 또는 자바스크립트 파일) Google에서 동일한 리소스를 여러 번 요청하지 않고도 동일한 리소스를 캐시하고 재사용할 수 있도록 각 페이지에서 동일한 URL의 리소스를 참조합니다.
피해야 할 사항:
- 사이트의 크롤링 예산을 재할당하는 방법으로 robots.txt에서 페이지 또는 디렉터리를 정기적으로 추가하거나 삭제하지 않습니다. 장기간 Google에 표시되지 않을 페이지 또는 리소스에만 robots.txt를 사용하세요.
- 예산을 재할당하기 위해 사이트맵을 로테이션하거나 다른 임시 숨김 메커니즘을 사용하지 않습니다.
과도한 사이트 크롤링 처리(긴급)
Googlebot에는 크롤링 요청으로 사이트에 과부하가 걸리지 않도록 하는 알고리즘이 있습니다. 그러나 Googlebot으로 사이트에 과부하가 걸린다고 확인하면 다음과 같은 조치를 취할 수 있습니다.
진단:
사이트에 과도한 Googlebot 요청이 있는지 서버를 모니터링합니다.
처리:
긴급 상황에서는 다음 단계를 따라 Googlebot의 과도한 크롤링 속도를 늦추는 것이 좋습니다.
- 서버가 과부하되면 Googlebot 요청에 대해 일시적으로
503
429
HTTP 응답 상태 코드를 반환합니다. Googlebot은 약 2일 동안 이러한 URL을 다시 시도합니다. 며칠 동안 '사용 불가' 코드를 반환하면 Google에서 사이트의 URL 크롤링을 영구적으로 느리게 하거나 중지하므로 추가 단계를 따르세요. - Googlebot의 사이트 크롤링 속도를 줄입니다. 적용되려면 최대 2일이 걸릴 수 있고 Search Console 속성 소유자 권한이 필요합니다. 크롤링 통계 보고서의 호스트 가용성 > 호스트 사용률 차트에서 장기간 반복된 Google의 과도한 크롤링을 확인한 경우에만 이 작업을 실행하세요.
-
크롤링 속도가 내려가면 크롤링 요청에
503
또는429
HTTP 반환을 중지합니다. 2일 이상503
또는429
를 반환하면 Google이 색인에서 해당 URL을 삭제하게 됩니다. - 시간이 지남에 따라 크롤링 및 호스트 용량을 모니터링하고 필요한 경우 크롤링 속도를 다시 높이거나 기본 크롤링 속도를 허용합니다.
- 문제가 있는 크롤러가 AdsBot 크롤러 중 하나이면 Google에서 크롤링하려는 사이트에 사용자가 동적 검색 광고 타겟을 생성한 것이 문제일 수 있습니다. 이 크롤링은 2주마다 다시 실행됩니다. 이러한 크롤링을 처리할 서버 용량이 부족한 경우 광고 타겟을 제한하거나 게재 용량을 늘립니다.
크롤링에 관한 허구와 사실
Google에서 웹사이트를 크롤링하고 색인을 생성하는 방법에 관한 지식을 테스트하세요.
5xx
HTTP 응답 상태 코드(서버 오류) 또는 연결 시간 제한의 상당수가 반대의 경우를 나타내며 크롤링 속도가 느려집니다. Search Console의 크롤링 통계 보고서에 유의하고 서버 오류 수를 낮게 유지하는 것이 좋습니다.
nofollow
규칙nofollow
로 표시하더라도 사이트의 다른 페이지나 웹의 페이지에서
링크의 라벨을 nofollow
로 지정하지 않으면 여전히 크롤링될 수 있습니다.
noindex
를 사용하여 크롤링 예산을 제어할 수 있습니다.noindex
규칙을 찾기 위해 페이지를 크롤링해야 합니다.
하지만
noindex
는 색인 생성을 방지하는 데 도움이 됩니다. 페이지가 Google 색인에 포함되지 않도록 할 때 noindex
을 계속 사용하셔도 됩니다. 크롤링 예산은 걱정하지 마세요. noindex
등을 사용하여 Google 색인에서 URL을 제거하면 Googlebot이 사이트의 다른 URL에 집중할 수 있으므로 noindex
로 사이트의 크롤링 예산을 간접적으로 확보할 수 있습니다.
4xx
HTTP 상태 코드를 제공하는 페이지는 크롤링 예산을 낭비합니다.4xx
HTTP 상태 코드(429
제외)를 제공하는 페이지는 크롤링 예산을 낭비하지 않습니다. Google에서 페이지 크롤링을 시도했지만 상태 코드를 제외한 다른 콘텐츠는 받지 못했습니다.