Сборка без MsgPack
MsgPack (MessagePack) — это компактный формат бинарной сериализации. Его можно представить как более быструю и компактную альтернативу JSON. Gin по умолчанию включает поддержку рендеринга и привязки MsgPack, что означает, что ваше приложение может принимать и возвращать данные в формате MsgPack из коробки, используя c.Bind() и c.Render() с соответствующим типом контента.
Однако многие приложения используют только JSON и никогда не нуждаются в MsgPack. В этом случае зависимость MsgPack добавляет лишний вес к скомпилированному бинарному файлу. Вы можете исключить её с помощью тега сборки nomsgpack.
Сборка без MsgPack
Передайте тег nomsgpack команде go build:
go build -tags=nomsgpack .Это также работает с другими командами Go:
go run -tags=nomsgpack .go test -tags=nomsgpack ./...Что изменяется
При сборке с тегом nomsgpack Gin исключает код рендеринга и привязки MsgPack на этапе компиляции. Это имеет несколько практических последствий:
- Скомпилированный бинарный файл становится меньше, так как библиотека сериализации MsgPack не компонуется.
- Любой обработчик, который пытается рендерить или привязывать данные MsgPack, перестанет работать. Если вы используете
c.ProtoBuf()или другие рендереры, не связанные с MsgPack, они не затрагиваются. - Все функции JSON, XML, YAML, TOML и ProtoBuf продолжают работать нормально.
Проверка результата
Вы можете убедиться в уменьшении размера бинарного файла, сравнив сборки:
# Стандартная сборкаgo build -o gin-app .ls -lh gin-app
# Сборка без MsgPackgo build -tags=nomsgpack -o gin-app-nomsgpack .ls -lh gin-app-nomsgpackТочная экономия зависит от вашего приложения, но удаление MsgPack обычно немного уменьшает итоговый бинарный файл. Для получения дополнительной информации смотрите оригинальный pull request.