Skip to content

설정

Config 구조체

Config는 HTML 라이브러리의 통합 설정 구조체로, 리소스 관리, 보안, 콘텐츠 추출, 출력 형식 및 링크 필터링을 포함합니다.

리소스 관리

필드타입기본값설명
MaxInputSizeint52428800 (50MB)최대 입력 크기 (바이트)
MaxCacheEntriesint2000캐시 최대 항목 수
CacheTTLtime.Duration1h캐시 만료 시간
CacheCleanuptime.Duration5m캐시 정리 간격
WorkerPoolSizeint4워커 풀 크기
ProcessingTimeouttime.Duration30s처리 타임아웃 시간

MaxCacheEntries, CacheCleanup, ProcessingTimeout0으로 설정하는 것은 오류가 아니라 명확한 의미를 가집니다 (각각 캐시 비활성화, 백그라운드 정리 비활성화, 시간 제한 없음을 의미). 반면 MaxInputSize, WorkerPoolSize, MaxDepth는 반드시 양수여야 하며, 그렇지 않으면 ConfigError가 발생합니다.

보안

필드타입기본값설명
EnableSanitizationbooltrue콘텐츠 정제 활성화, 신뢰할 수 있는 입력에만 비활성화 가능
MaxDepthint500최대 DOM 깊이
AllowedBaseDirstring""파일 작업을 이 디렉터리로 제한합니다. 비워두면 (기본값) 제한이 없습니다. 신뢰할 수 없는 파일 경로 입력을 받을 때 사용하세요
AuditAuditConfigDefaultAuditConfig()감사 설정

콘텐츠 추출

필드타입기본값설명
ExtractArticlebooltrue스마트 문서 인식 활성화
PreserveImagesbooltrue이미지 정보 보존
PreserveLinksbooltrue링크 정보 보존
PreserveVideosbooltrue비디오 정보 보존
PreserveAudiosbooltrue오디오 정보 보존

출력 형식

필드타입기본값선택값설명
InlineImageFormatstringnonenone, markdown, html, placeholder인라인 이미지 형식
InlineLinkFormatstringnonenone, markdown, html인라인 링크 형식
TableFormatstringmarkdownmarkdown, html테이블 형식
Encodingstring""-인코딩 지정 (비워두면 자동 감지)

링크 추출

필드타입기본값설명
ResolveRelativeURLsbooltrue상대 URL 해석, BaseURL 설정 필요
BaseURLstring""기본 URL(상대 경로 해석에 사용)
IncludeImagesbooltrue이미지 링크 포함
IncludeVideosbooltrue비디오 링크 포함
IncludeAudiosbooltrue오디오 링크 포함
IncludeCSSbooltrueCSS 링크 포함
IncludeJSbooltrueJS 링크 포함
IncludeContentLinksbooltrue콘텐츠 링크 포함
IncludeExternalLinksbooltrue외부 링크 포함
IncludeIconsbooltrue아이콘 링크 포함

확장

필드타입기본값설명
ScorerScorernil커스텀 콘텐츠 스코어러, 비어있으면 기본 스코어러 사용

프리셋 설정

DefaultConfig

균형 잡힌 설정으로 범용 시나리오에 적합합니다.

go
cfg := html.DefaultConfig()

TextOnlyConfig

순수 텍스트만 추출하며, 모든 미디어와 링크 보존을 비활성화합니다 (PreserveImages, PreserveLinks, PreserveVideos, PreserveAudios 모두 false로 설정).

go
cfg := html.TextOnlyConfig()

MarkdownConfig

Markdown 출력에 최적화되며, 인라인 이미지와 링크에 Markdown 형식을 사용합니다.

go
cfg := html.MarkdownConfig()

HighSecurityConfig

고보안 설정: 축소된 제한, 더 짧은 타임아웃, 전체 감사.

go
cfg := html.HighSecurityConfig()

DefaultConfig()와 비교한 변경 값:

필드기본값고보안값
MaxInputSize52428800 (50MB)10485760 (10MB)
MaxCacheEntries2000500
CacheTTL1h30m
CacheCleanup5m1m
WorkerPoolSize42
ProcessingTimeout30s10s
MaxDepth500100
AuditDefaultAuditConfig()HighSecurityAuditConfig()

Validate

설정의 유효성을 검증합니다.

go
func (c Config) Validate() error
go
cfg := html.DefaultConfig()
cfg.MaxInputSize = -1
err := cfg.Validate() // ConfigError 반환

검증 제약 조건

Validate()가 숫자 필드에 적용하는 값의 범위입니다 (위반 시 ConfigError를 반환하며, errors.Is(err, html.ErrInvalidConfig)로 확인할 수 있음):

필드제약 조건잘못된 예
MaxInputSize양수이며 ≤ 52428800 (50MB)0, -1, 100000000
MaxCacheEntries0이며 ≤ 100000-1, 200000
CacheTTL0-1 * time.Second
CacheCleanup0-1 * time.Minute
WorkerPoolSize양수이며 ≤ 2560, 512
MaxDepth양수이며 ≤ 5000, 1000
ProcessingTimeout0-1 * time.Second
InlineImageFormat빈 값 / none / markdown / html / placeholder"pdf"
InlineLinkFormat빈 값 / none / markdown / html"pdf"
TableFormat빈 값 / markdown / html"csv"

형식 문자열은 대소문자를 구분하지 않으며, 빈 값은 기본값으로 간주됩니다 (InlineImageFormat/InlineLinkFormatnone, TableFormatmarkdown). New()는 Processor 생성 전에 Validate()를 먼저 호출하므로, 잘못된 설정은 사용 가능한 Processor 를 생성하지 않습니다.