高级配置选项
Hugo 的高级配置功能为专业用户提供了精细的控制能力。通过合理配置缓存、安全策略、输出格式等高级选项,您可以优化站点性能、增强安全性,并实现复杂的发布需求。
缓存配置
Hugo 的缓存系统是其高性能的关键因素之一。通过合理配置缓存,可以显著减少构建时间。
缓存类型与配置
Hugo 支持多种类型的缓存:
# config/_default/hugo.toml
[caches]
# 静态资源缓存
[caches.assets]
dir = ':resourceDir/_gen'
maxAge = -1 # 永不过期
# 图片处理缓存
[caches.images]
dir = ':resourceDir/_gen'
maxAge = -1
# 数据获取缓存
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = '1h'
[caches.getcsv]
dir = ':cacheDir/:project'
maxAge = '1h'
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = '1h'
# 模块缓存
[caches.modules]
dir = ':cacheDir/modules'
maxAge = -1
缓存路径变量
Hugo 提供了多个内置路径变量:
:cacheDir
:系统缓存目录:project
:当前项目名称:resourceDir
:资源目录路径:workingDir
:工作目录路径
缓存策略配置
[caches]
# 开发环境:短时间缓存
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = '5m' # 5 分钟过期
# 生产环境:长时间缓存
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = '24h' # 24 小时过期
# 特殊配置:只在内存中缓存
[caches.templates]
dir = ':cacheDir/templates'
maxAge = '30m'
缓存清理
# 清理所有缓存
hugo --gc
# 清理特定类型缓存
rm -rf resources/_gen/assets/
rm -rf resources/_gen/images/
# 清理远程资源缓存
rm -rf $TMPDIR/hugo_cache/
安全配置
Hugo 的安全配置系统提供了多层次的安全保护机制。
执行安全配置
# config/_default/hugo.toml
[security]
# 可执行文件白名单
[security.exec]
allow = [
'^dart-sass-embedded$',
'^go$',
'^npx$',
'^postcss$',
'^sass$',
'^tailwindcss$'
]
# 操作系统环境变量
osEnv = [
'HUGO_NUMWORKERMULTIPLIER',
'HUGO_MEMORYLIMIT'
]
函数安全配置
[security.funcs]
# 允许的 getenv 环境变量模式
getenv = [
'^HUGO_',
'^CI$',
'^USER$',
'^HOME$',
'^PATH$'
]
HTTP 安全配置
[security.http]
# 允许的 URL 模式
urls = [
'.*' # 开发环境:允许所有 URL
]
# 生产环境:限制 URL
urls = [
'https://api\.github\.com/.*',
'https://api\.twitter\.com/.*',
'https://.*\.googleapis\.com/.*'
]
# 允许的 HTTP 方法
methods = ['GET', 'POST']
# 请求头配置
headers = [
'Accept: application/json',
'User-Agent: Hugo Static Site Generator'
]
内容安全配置
[security]
# 禁用内联样式
enableInlineShortcodes = false
# 禁用原始 HTML(在 Markdown 中)
[markup.goldmark.renderer]
unsafe = false
# 启用内容安全策略
[params.security]
enableCSP = true
cspDirectives = [
"default-src 'self'",
"script-src 'self' 'unsafe-inline'",
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data: https:"
]
输出格式配置
Hugo 支持多种输出格式,满足不同的发布需求。
内置输出格式
# config/_default/hugo.toml
[outputs]
# 首页输出格式
home = ['HTML', 'RSS', 'JSON', 'ATOM']
# 普通页面输出格式
page = ['HTML']
# 章节页面输出格式
section = ['HTML', 'RSS']
# 分类页面输出格式
taxonomy = ['HTML', 'RSS']
# 分类条目页面输出格式
term = ['HTML', 'RSS']
自定义输出格式
[outputFormats]
# 自定义 JSON 输出
[outputFormats.SearchIndex]
mediaType = 'application/json'
baseName = 'search-index'
isPlainText = true
notAlternative = true
# 自定义 XML 输出
[outputFormats.CustomXML]
mediaType = 'application/xml'
baseName = 'custom'
isPlainText = true
# 自定义 Markdown 输出
[outputFormats.MarkdownExport]
mediaType = 'text/plain'
baseName = 'export'
isPlainText = true
媒体类型配置
[mediaTypes]
# 自定义媒体类型
[mediaTypes.'application/rss+xml']
delimiter = ''
[mediaTypes.'application/atom+xml']
delimiter = ''
[mediaTypes.'application/json']
delimiter = ''
# 自定义扩展名
[mediaTypes.'text/custom']
delimiter = ''
输出格式应用
# 为特定页面类型配置输出格式
[outputs]
home = ['HTML', 'RSS', 'JSON', 'SearchIndex']
page = ['HTML', 'MarkdownExport']
section = ['HTML', 'RSS', 'CustomXML']
# 条件输出格式
[outputs]
home = ['HTML', 'RSS']
# 仅在生产环境输出搜索索引
# 通过环境变量控制
处理器配置
Markdown 处理器配置
# config/_default/markup.toml
[goldmark]
# 渲染器配置
[goldmark.renderer]
unsafe = true # 允许原始 HTML
hardWraps = false
xhtml = false
# 解析器配置
[goldmark.parser]
autoHeadingID = true
autoHeadingIDType = 'github'
wrapStandAloneImageWithinParagraph = true
# 扩展配置
[goldmark.extensions]
definitionList = true
footnote = true
linkify = true
linkifyProtocol = 'https'
strikethrough = true
table = true
taskList = true
typographer = true
# 属性配置
[goldmark.parser.attribute]
title = true
block = true
代码高亮配置
[markup.highlight]
# 高亮样式
style = 'github'
theme = 'github'
# 行号配置
lineNos = true
lineNumbersInTable = true
anchorLineNos = false
lineAnchors = ''
lineNoStart = 1
# 其他配置
tabWidth = 4
guessSyntax = true
hl_Lines = ''
hl_inline = false
noClasses = true
noHl = false
图片处理配置
[imaging]
# 图片处理质量
quality = 85
jpegQuality = 85
pngCompressionLevel = 6
webpQuality = 85
# 图片处理后缀
resampleFilter = 'CatmullRom'
bgColor = '#ffffff'
hint = 'photo'
# 图片格式转换
formats = ['webp', 'jpeg']
# 图片尺寸配置
[imaging.exif]
includeFields = ''
excludeFields = ''
disableDate = false
disableLatLong = false
性能优化配置
构建优化
# config/_default/hugo.toml
# 构建统计
[buildStats]
enable = true
disableClasses = false
disableIDs = false
disableTags = false
# 内存限制
[build]
useResourceCacheWhen = 'fallback'
writeStats = true
# 缓存清除器
[[cachebusters]]
source = 'assets/watching/hugo_stats\\.json'
target = 'styles\\.css'
[[cachebusters]]
source = '(postcss|tailwind)\\.config\\.js'
target = 'css'
分段渲染配置
# 分段渲染(实验性功能)
[renderSegments]
enable = true
# 分段配置
[[renderSegments.segments]]
path = '/blog/**'
renderer = 'html'
[[renderSegments.segments]]
path = '/docs/**'
renderer = 'html'
内存优化配置
# 内存使用优化
[build]
writeStats = true
useResourceCacheWhen = 'fallback'
# 并发处理配置
[build.processing]
concurrency = 4
timeout = '30s'
# 垃圾回收配置
[build.gc]
enable = true
threshold = 1000
调试与监控配置
日志配置
# config/_default/hugo.toml
# 日志级别
logLevel = 'info' # debug, info, warn, error
# 详细日志
verbose = true
verboseLog = true
# 日志路径
logFile = 'hugo.log'
# 调试模式
debug = true
性能监控
# 性能统计
[params.performance]
enableBuildStats = true
enableMemoryStats = true
enableTimingStats = true
# 构建报告
[build.reporting]
enableBuildTime = true
enableMemoryUsage = true
enableFileStats = true
错误处理配置
# 错误处理
[errors]
# 缺失翻译处理
enableMissingTranslationPlaceholders = true
printI18nWarnings = true
# 链接检查
[markup.goldmark.extensions.linkify]
checkLinks = true
reportBrokenLinks = true
环境特定高级配置
开发环境优化
# config/development/hugo.toml
# 开发模式优化
disableFastRender = false
enableInlineShortcodes = true
# 调试配置
[caches]
[caches.getjson]
maxAge = '30s' # 短缓存时间
[security.http]
urls = ['.*'] # 允许所有 URL
生产环境优化
# config/production/hugo.toml
# 生产模式优化
minify = true
enableGitInfo = true
# 长缓存时间
[caches]
[caches.getjson]
maxAge = '24h'
# 严格安全配置
[security.http]
urls = [
'https://api\.github\.com/.*',
'https://.*\.googleapis\.com/.*'
]
最佳实践
缓存策略:
- 开发环境使用短缓存时间
- 生产环境使用长缓存时间
- 定期清理缓存避免磁盘空间问题
安全配置:
- 最小权限原则配置执行白名单
- 限制 HTTP 请求的目标域名
- 谨慎使用
unsafe
选项
输出格式:
- 根据实际需求选择输出格式
- 避免生成不必要的格式增加构建时间
- 合理使用自定义输出格式
性能优化:
- 启用构建统计监控性能
- 使用分段渲染优化大型站点
- 合理配置并发处理数量
调试配置:
- 开发环境启用详细日志
- 生产环境关闭调试信息
- 使用性能监控识别瓶颈
通过合理配置这些高级选项,您可以构建出性能优异、安全可靠的 Hugo 站点。