설정
Config 구조체
Config는 HTML 라이브러리의 통합 설정 구조체로, 리소스 관리, 보안, 콘텐츠 추출, 출력 형식 및 링크 필터링을 포함합니다.
리소스 관리
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
MaxInputSize | int | 52428800 (50MB) | 최대 입력 크기 (바이트) |
MaxCacheEntries | int | 2000 | 캐시 최대 항목 수 |
CacheTTL | time.Duration | 1h | 캐시 만료 시간 |
CacheCleanup | time.Duration | 5m | 캐시 정리 간격 |
WorkerPoolSize | int | 4 | 워커 풀 크기 |
ProcessingTimeout | time.Duration | 30s | 처리 타임아웃 시간 |
팁
MaxCacheEntries, CacheCleanup, ProcessingTimeout을 0으로 설정하는 것은 오류가 아니라 명확한 의미를 가집니다 (각각 캐시 비활성화, 백그라운드 정리 비활성화, 시간 제한 없음을 의미). 반면 MaxInputSize, WorkerPoolSize, MaxDepth는 반드시 양수여야 하며, 그렇지 않으면 ConfigError가 발생합니다.
보안
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
EnableSanitization | bool | true | 콘텐츠 정제 활성화, 신뢰할 수 있는 입력에만 비활성화 가능 |
MaxDepth | int | 500 | 최대 DOM 깊이 |
AllowedBaseDir | string | "" | 파일 작업을 이 디렉터리로 제한합니다. 비워두면 (기본값) 제한이 없습니다. 신뢰할 수 없는 파일 경로 입력을 받을 때 사용하세요 |
Audit | AuditConfig | DefaultAuditConfig() | 감사 설정 |
콘텐츠 추출
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
ExtractArticle | bool | true | 스마트 문서 인식 활성화 |
PreserveImages | bool | true | 이미지 정보 보존 |
PreserveLinks | bool | true | 링크 정보 보존 |
PreserveVideos | bool | true | 비디오 정보 보존 |
PreserveAudios | bool | true | 오디오 정보 보존 |
출력 형식
| 필드 | 타입 | 기본값 | 선택값 | 설명 |
|---|---|---|---|---|
InlineImageFormat | string | none | none, markdown, html, placeholder | 인라인 이미지 형식 |
InlineLinkFormat | string | none | none, markdown, html | 인라인 링크 형식 |
TableFormat | string | markdown | markdown, html | 테이블 형식 |
Encoding | string | "" | - | 인코딩 지정 (비워두면 자동 감지) |
링크 추출
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
ResolveRelativeURLs | bool | true | 상대 URL 해석, BaseURL 설정 필요 |
BaseURL | string | "" | 기본 URL(상대 경로 해석에 사용) |
IncludeImages | bool | true | 이미지 링크 포함 |
IncludeVideos | bool | true | 비디오 링크 포함 |
IncludeAudios | bool | true | 오디오 링크 포함 |
IncludeCSS | bool | true | CSS 링크 포함 |
IncludeJS | bool | true | JS 링크 포함 |
IncludeContentLinks | bool | true | 콘텐츠 링크 포함 |
IncludeExternalLinks | bool | true | 외부 링크 포함 |
IncludeIcons | bool | true | 아이콘 링크 포함 |
확장
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
Scorer | Scorer | nil | 커스텀 콘텐츠 스코어러, 비어있으면 기본 스코어러 사용 |
프리셋 설정
DefaultConfig
균형 잡힌 설정으로 범용 시나리오에 적합합니다.
cfg := html.DefaultConfig()TextOnlyConfig
순수 텍스트만 추출하며, 모든 미디어와 링크 보존을 비활성화합니다 (PreserveImages, PreserveLinks, PreserveVideos, PreserveAudios 모두 false로 설정).
cfg := html.TextOnlyConfig()MarkdownConfig
Markdown 출력에 최적화되며, 인라인 이미지와 링크에 Markdown 형식을 사용합니다.
cfg := html.MarkdownConfig()HighSecurityConfig
고보안 설정: 축소된 제한, 더 짧은 타임아웃, 전체 감사.
cfg := html.HighSecurityConfig()DefaultConfig()와 비교한 변경 값:
| 필드 | 기본값 | 고보안값 |
|---|---|---|
MaxInputSize | 52428800 (50MB) | 10485760 (10MB) |
MaxCacheEntries | 2000 | 500 |
CacheTTL | 1h | 30m |
CacheCleanup | 5m | 1m |
WorkerPoolSize | 4 | 2 |
ProcessingTimeout | 30s | 10s |
MaxDepth | 500 | 100 |
Audit | DefaultAuditConfig() | HighSecurityAuditConfig() |
Validate
설정의 유효성을 검증합니다.
func (c Config) Validate() errorcfg := html.DefaultConfig()
cfg.MaxInputSize = -1
err := cfg.Validate() // ConfigError 반환검증 제약 조건
Validate()가 숫자 필드에 적용하는 값의 범위입니다 (위반 시 ConfigError를 반환하며, errors.Is(err, html.ErrInvalidConfig)로 확인할 수 있음):
| 필드 | 제약 조건 | 잘못된 예 |
|---|---|---|
MaxInputSize | 양수이며 ≤ 52428800 (50MB) | 0, -1, 100000000 |
MaxCacheEntries | ≥ 0이며 ≤ 100000 | -1, 200000 |
CacheTTL | ≥ 0 | -1 * time.Second |
CacheCleanup | ≥ 0 | -1 * time.Minute |
WorkerPoolSize | 양수이며 ≤ 256 | 0, 512 |
MaxDepth | 양수이며 ≤ 500 | 0, 1000 |
ProcessingTimeout | ≥ 0 | -1 * time.Second |
InlineImageFormat | 빈 값 / none / markdown / html / placeholder | "pdf" |
InlineLinkFormat | 빈 값 / none / markdown / html | "pdf" |
TableFormat | 빈 값 / markdown / html | "csv" |
형식 문자열은 대소문자를 구분하지 않으며, 빈 값은 기본값으로 간주됩니다 (InlineImageFormat/InlineLinkFormat → none, TableFormat → markdown). New()는 Processor 생성 전에 Validate()를 먼저 호출하므로, 잘못된 설정은 사용 가능한 Processor 를 생성하지 않습니다.