Главная Статьи Оптимизация

Минификация CSS, JS и HTML

Код, который пишут люди, нашпигован пробелами, отступами, переносами строк и комментариями — это удобно читать, но браузеру всё это не нужно. Минификация убирает лишнее, оставляя только то, что реально работает. Файл худеет, а сайт грузится быстрее. Приём простой и почти всегда уместный. Разберём, как он устроен.

Что такое минификация

Минификация — это удаление из кода всего, что не влияет на его работу: лишних пробелов, переносов строк, комментариев, иногда — сокращение имён переменных. Для человека минифицированный код нечитаем, для браузера — работает абсолютно так же, только весит меньше.

До — 142 символа
.button {
  color: #ffffff;
  background: #2d7ff9;
  /* основная кнопка */
  padding: 10px 20px;
}
После — 78 символов
.button{color:#fff;background:#2d7ff9;padding:10px 20px}

На одном правиле экономия скромная, но в реальном файле стилей или скриптов на тысячи строк она складывается в десятки процентов веса.

Минификация и gzip — это разное

Частый вопрос: зачем минифицировать, если есть сжатие gzip? Это два разных приёма, и они складываются. Минификация убирает лишнее из самого файла (его меньше и в исходнике), а gzip сжимает при передаче по сети и распаковывается у пользователя. Минифицированный файл к тому же сжимается gzip чуть эффективнее. Поэтому делают и то, и другое.

Как минифицировать

⚠️ Минифицируйте копию, а не исходник. Минифицированный код почти невозможно редактировать, поэтому всегда держите читаемую исходную версию, а на сайт отдавайте минифицированную. Иначе любая будущая правка превратится в мучение.

На что обратить внимание

Минификация — часть базовой оптимизации скорости вместе с сжатием, кэшированием и ленивой загрузкой картинок. Как это влияет на метрики — в статье Core Web Vitals.

Коротко

Минификация убирает из CSS, JS и HTML лишние пробелы, переносы и комментарии — код становится легче, а сайт грузится быстрее. Это не замена gzip, а дополнение: минификация облегчает сам файл, сжатие — его передачу, и вместе они работают лучше. Включается сборщиком или плагином CMS, для статики подойдёт онлайн-минификатор. Главное — хранить читаемый исходник отдельно и проверить, что после минификации JS ничего не сломалось.

Частые вопросы

Что такое минификация кода?
Это удаление из CSS, JS и HTML всего, что не влияет на работу: лишних пробелов, переносов строк, комментариев, иногда сокращение имён переменных. Для браузера код работает так же, но весит меньше, поэтому страница грузится быстрее. Для человека минифицированный код становится нечитаемым.
Зачем минифицировать, если есть gzip?
Это разные приёмы, и они складываются. Минификация убирает лишнее из самого файла (он меньше уже в исходнике), а gzip сжимает файл при передаче по сети и распаковывается у пользователя. К тому же минифицированный файл сжимается gzip чуть эффективнее. Поэтому делают и минификацию, и сжатие.
Как минифицировать CSS и JS?
Проще всего — сборщиком (build-процесс минифицирует при сборке) или плагином оптимизации на CMS (WordPress, Битрикс и др.) без правки кода. Для статичного сайта можно прогнать файлы через онлайн-минификатор и залить результат. Главное — минифицировать копию, а читаемый исходник хранить отдельно.
Может ли минификация сломать сайт?
Изредка агрессивная минификация JavaScript задевает хитрый код. Поэтому после включения стоит пройтись по основным функциям сайта и проверить, что всё работает. Также не нужно минифицировать дважды (например, плагином и ещё одной надстройкой) — это создаёт лишнюю нагрузку и риск конфликтов.
Нужно ли минифицировать HTML?
Можно, но выигрыш от минификации HTML обычно меньше, чем от CSS и JavaScript, потому что HTML-страница часто генерируется динамически и хорошо сжимается gzip. Поэтому начните с минификации стилей и скриптов — там эффект заметнее, а HTML добавьте при желании.