
本文介绍在 go 语言中实现 html 压缩的实用方法,重点解决去除无意义空白符(如缩进、换行)而不破坏语义的问题,并推荐成熟可靠的第三方库及使用示例。
HTML 压缩(minification)并非简单地全局替换空格或换行符——例如
、
✅ github.com/dchest/htmlmin(轻量备选)
更轻量,专注 HTML,适合简单场景。但已多年未活跃维护,不支持 HTML5 新特性(如自闭合 SVG 标签)及复杂空白逻辑,建议仅用于原型或低风险内部工具。
⚠️ 注意事项:
- 避免在动态生成 HTML 后实时压缩(如每次 HTTP 响应都调用),应结合缓存(如 sync.Pool 复用 minify.Minifier 实例)提升性能;
- 压缩前确保 HTML 语法正确,否则解析器可能 panic 或静默失败;
- 若需保留调试用注释(如 ),可在 html.Options 中配置 KeepComments: true(tdewolff/minify 支持);
- 模板渲染阶段(如 html/template)后压缩效果最佳,避免在字符串拼接层处理。
综上,优先选用 tdewolff/minify/v2/html ——它以标准 HTML 解析器为基础,兼顾安全性、兼容性与性能,是 Go 生态中 HTML 压缩的事实标准方案。










