Skip to content

配置 ​

Config 结构体 ​

Config 是 HTML 库的统一配置结构体,涵盖资源管理、安全、内容提取、输出格式和链接过滤。

全部 30 个字段一览(详细约束与说明见下方分组小节):

字段类型分组默认值
Config.MaxInputSizeint资源管理52428800(50MB)
Config.MaxCacheEntriesint资源管理2000
Config.CacheTTLtime.Duration资源管理1h
Config.CacheCleanuptime.Duration资源管理5m
Config.WorkerPoolSizeint资源管理4
Config.ProcessingTimeouttime.Duration资源管理30s
Config.EnableSanitizationbool安全true
Config.MaxDepthint安全500
Config.AllowedBaseDirstring安全""
Config.AuditAuditConfig安全DefaultAuditConfig()
Config.ExtractArticlebool内容提取true
Config.PreserveImagesbool内容提取true
Config.PreserveLinksbool内容提取true
Config.PreserveVideosbool内容提取true
Config.PreserveAudiosbool内容提取true
Config.InlineImageFormatstring输出格式none
Config.InlineLinkFormatstring输出格式none
Config.TableFormatstring输出格式markdown
Config.Encodingstring输出格式""(自动检测)
Config.ResolveRelativeURLsbool链接提取true
Config.BaseURLstring链接提取""
Config.IncludeImagesbool链接提取true
Config.IncludeVideosbool链接提取true
Config.IncludeAudiosbool链接提取true
Config.IncludeCSSbool链接提取true
Config.IncludeJSbool链接提取true
Config.IncludeContentLinksbool链接提取true
Config.IncludeExternalLinksbool链接提取true
Config.IncludeIconsbool链接提取true
Config.ScorerScorer扩展nil(内置默认评分器)

资源管理 ​

字段类型默认值说明
MaxInputSizeint52428800 (50MB)最大输入大小(字节),取值范围 1–52428800
MaxCacheEntriesint2000缓存最大条目数,设为 0 禁用缓存(上限 100000)
CacheTTLtime.Duration1h缓存过期时间,不能为负
CacheCleanuptime.Duration5m过期缓存的后台清理间隔,设为 0 禁用后台清理
WorkerPoolSizeint4批量处理的工作池大小,取值范围 1–256
ProcessingTimeouttime.Duration30s单文档处理超时,设为 0 表示不限时

零值语义

MaxCacheEntries、CacheCleanup、ProcessingTimeout 设为 0 不是错误,而是有明确语义(分别表示禁用缓存、禁用后台清理、不限时)。MaxInputSize、WorkerPoolSize、MaxDepth 则必须为正数,否则触发 ConfigError。

因此零值 Config{} 无法通过 Validate(),不可直接使用——请始终从 DefaultConfig()(或其它预设)出发,按需覆写字段。

安全 ​

字段类型默认值说明
EnableSanitizationbooltrue启用内容清洗,仅对可信输入可禁用
MaxDepthint500最大 DOM 深度,取值范围 1–500
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包含音频链接
IncludeCSSbooltrue包含 CSS 链接
IncludeJSbooltrue包含 JS 链接
IncludeContentLinksbooltrue包含内容链接
IncludeExternalLinksbooltrue包含外部链接
IncludeIconsbooltrue包含图标链接

扩展 ​

字段类型默认值说明
ScorerScorernil自定义内容评分器,为空时使用默认评分器

预设配置 ​

DefaultConfig ​

DefaultConfig 返回均衡配置,适合通用场景,是绝大多数应用的起点。

go
func DefaultConfig() Config
go
cfg := html.DefaultConfig()

TextOnlyConfig ​

仅提取纯文本,禁用所有媒体和链接保留(PreserveImages、PreserveLinks、PreserveVideos、PreserveAudios 均设为 false)。

go
func TextOnlyConfig() Config
go
cfg := html.TextOnlyConfig()

MarkdownConfig ​

MarkdownConfig 在默认配置基础上将 InlineImageFormat 与 InlineLinkFormat 均设为 markdown,适合内联图片和链接使用 Markdown 格式的输出。

go
func MarkdownConfig() Config
go
cfg := html.MarkdownConfig()

HighSecurityConfig ​

高安全配置:缩减限制、更短超时、完整审计。

go
func HighSecurityConfig() Config
go
cfg := html.HighSecurityConfig()

相比 DefaultConfig() 的覆盖值:

字段默认值高安全值
MaxInputSize52428800 (50MB)10485760 (10MB)
MaxCacheEntries2000500
CacheTTL1h30m
CacheCleanup5m1m
WorkerPoolSize42
ProcessingTimeout30s10s
MaxDepth500100
AuditDefaultAuditConfig()HighSecurityAuditConfig()

Validate ​

Validate 验证配置的有效性(值接收者,可直接 cfg.Validate() 调用),无效时返回包裹 ErrInvalidConfig 的 *ConfigError。

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

验证约束 ​

Config.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正数且 ≤ 2560、512
MaxDepth正数且 ≤ 5000、1000
ProcessingTimeout≥ 0-1 * time.Second
Audit.MaxEntries≥ 0 且 ≤ 100000(0 表示使用默认值 10000)-1、200000
InlineImageFormat空 / none / markdown / html / placeholder"pdf"
InlineLinkFormat空 / none / markdown / html"pdf"
TableFormat空 / markdown / html"csv"

格式字符串大小写不敏感且空值视为默认(InlineImageFormat/InlineLinkFormat → none,TableFormat → markdown)。New() 在创建 Processor 前会先调用 Validate(),因此无效配置不会产出可用的 Processor。