htmlLimitedBots#
- 상위 메뉴: next.config.js
- 전체 목차: Next.js 학습 문서
학습 목표#
htmlLimitedBots가 user agent에 따라blocking metadata와streaming metadata를 나누는 방식을 이해한다.- Next.js의 기본 HTML limited bot 목록과, 사용자가 직접 지정하면 기본 목록을 덮어쓰는 동작을 파악한다.
/.*/정규식으로streaming metadata를 완전히 비활성화하는 방법을 익힌다.htmlLimitedBots가 도입된 버전을 확인한다.
핵심 개념 및 설명#
htmlLimitedBots는 지정한 user agent 목록에 streaming metadata 대신 blocking metadata를 전달하도록 설정하는 옵션이다.
next.config.tsts
import type { NextConfig } from 'next'
const config: NextConfig = {
htmlLimitedBots: /MySpecialBot|MyAnotherSpecialBot|SimpleCrawler/,
}
export default config기본 목록 (Default list)#
Next.js가 기본으로 담고 있는 HTML limited bot 목록은 다음과 같다.
- Google 크롤러(예: Mediapartners-Google, AdsBot-Google, Google-PageRenderer)
- Bingbot
- Twitterbot
- Slackbot
전체 목록은 여기에서 확인한다.
htmlLimitedBots를 설정하면 Next.js의 기본 목록을 덮어쓴다. 덮어쓰기는 고급 설정에 해당하며 대부분은 기본 목록으로 충분하다.
기본 목록을 덮어쓰는 설정은 다음과 같다.
next.config.tsts
const config: NextConfig = {
htmlLimitedBots: /MySpecialBot|MyAnotherSpecialBot|SimpleCrawler/,
}
export default config비활성화 (Disabling)#
streaming metadata를 완전히 비활성화하려면 모든 user agent와 일치하는 /.*/을 설정한다.
next.config.tsts
import type { NextConfig } from 'next'
const config: NextConfig = {
htmlLimitedBots: /.*/,
}
export default config버전 기록 (Version History)#
| 버전 | 변경 사항 |
|---|---|
15.2.0 | htmlLimitedBots 옵션을 도입했다. |
예제 및 데모 설계#
- 데모 가능 여부: 가능 (브라우저의 User-Agent를 바꾸어 메타데이터 전달 방식을 비교할 수 있다)
- 기본 설정을 사용한 페이지와
htmlLimitedBots: /.*/을 적용한 페이지를 준비한다. - 브라우저 DevTools의 User-Agent 재정의 기능으로 지정한 bot 문자열을 보내고, HTML 응답에 메타데이터가 실리는 시점을 비교한다.
- 기본 목록에 없는 user agent를 직접 설정에 추가했을 때
streaming metadata대신blocking metadata를 받는지 확인한다.
연습 문제#
htmlLimitedBots를 설정했을 때의 동작으로 올바른 것은 무엇인가?
- A. 기본 목록에 값을 추가해 기존 항목과 항상 합친다.
- B. Next.js의 기본 목록을 덮어쓰며 대부분의 경우 기본 목록이면 충분하다.
- C. 모든 user agent의 요청을 차단한다.
- D. 정적 자산의 캐시 시간을 변경한다.
정답 보기
정답: B
해설: htmlLimitedBots를 지정하면 Next.js의 기본 목록을 덮어쓴다. 공식 문서는 이 동작을 고급 설정으로 설명하며 대부분의 경우 기본 목록으로 충분하다고 안내한다.
streaming metadata를 완전히 비활성화하려면 어떤 값을 사용해야 하는가?
- A.
htmlLimitedBots: [] - B.
htmlLimitedBots: /.*/ - C.
htmlLimitedBots: false - D.
htmlLimitedBots: /none/
정답 보기
정답: B
해설: /.*/은 모든 user agent와 일치하므로 모든 대상에 blocking metadata를 전달하고 streaming metadata를 완전히 비활성화한다.
챕터 요약#
htmlLimitedBots는 지정한 user agent에streaming metadata대신blocking metadata를 전달한다.- 기본 목록에는 Google 크롤러, Bingbot, Twitterbot, Slackbot 등이 들어 있다.
- 사용자 설정을 지정하면 Next.js의 기본 목록을 덮어쓰므로 대부분은 기본 목록을 그대로 쓰는 편이 낫다.
htmlLimitedBots: /.*/은 모든 user agent와 일치해streaming metadata를 완전히 비활성화한다.- 이 옵션은 Next.js
15.2.0에서 도입됐다.