Minify css - это метод повышения производительности сайта.
Первоначально опубликовано на https://web.dev.
Исходная статья: https://web.dev/minify-css/
Файлы CSS могут содержать ненужные символы, такие как комментарии, пробелы и отступы. В производственной среде эти символы можно безопасно удалить, чтобы уменьшить размер файла, не влияя на то, как браузер обрабатывает стили. Этот метод называется минификацией.
Взгляните на следующий блок CSS:
Этот контент легко читать за счет создания файла большего размера, чем необходимо:
- Он использует пробелы для отступов и содержит комментарии, которые браузер игнорирует, поэтому их можно удалить.
- Элементы
<h1>и<h2>имеют одинаковые стили: вместо того, чтобы объявлять их по отдельности: «h1 {...} h2 {...}», они могут быть выражены как «h1, h2{...}». - Цвет фона,
#000000можно выразить просто как#000.
После внесения этих изменений вы получите более компактную версию тех же стилей:
Вы, вероятно, не захотите так писать CSS. Вместо этого вы можете написать CSS как обычно и добавить этап минификации в процесс сборки. В этом руководстве вы узнаете, как это сделать с помощью популярного инструмента сборки: webpack.
Вы примените минимизацию CSS к сайту, который использовался в других руководствах: Fav Kitties. В этой версии сайта используется классная библиотека CSS: animate.css для анимации различных элементов страницы, когда пользователь голосует за кота 😺.
В качестве первого шага вам нужно понять, какие возможности будут после минификации этого файла:
- Откройте страницу измерения.
- Введите URL:
https://fav-kitties-animated.glitch.meи нажмите Выполнить аудит. - Нажмите Просмотреть отчет.
- Нажмите Эффективность и перейдите в раздел Возможности.
Полученный отчет показывает, что из файла animate.css можно сохранить до 16 КБ:
Теперь проверьте содержимое CSS:
- Откройте Сайт Fav Kitties в Chrome. (Прежде чем серверы Glitch ответят в первый раз, это может занять некоторое время.)
- Нажмите
Control+Shift+J(илиCommand+Option+Jна Mac), чтобы открыть DevTools. - Перейдите на вкладку Сеть.
- Нажмите на фильтр CSS.
- Установите флажок Отключить кеш.
- Перезагрузите приложение.
Страница запрашивает два файла CSS размером 1,9 КБ и 76,2 КБ соответственно.
- Щелкните animate.css.
- Щелкните вкладку Ответ, чтобы увидеть содержимое файла.
Обратите внимание, что таблица стилей содержит символы для пробелов и отступов:
Затем вы добавите в процесс сборки несколько подключаемых модулей веб-пакетов, чтобы минимизировать эти файлы.
Примечание. в предыдущем отчете Lighthouse упоминается только animate.css как возможность минификации. Уменьшение style.css также сэкономит несколько байтов, но этого недостаточно, чтобы Lighthouse счел это значительной экономией. Однако минимизация CSS - это общая передовая практика; поэтому имеет смысл минимизировать все ваши файлы CSS.
CSS-минификация с помощью webpack
Прежде чем приступить к оптимизации, найдите время, чтобы понять, как работает процесс сборки для сайта Fav Kitties:
По умолчанию результирующий пакет JS, который создает веб-пакет, будет содержать содержимое встроенных файлов CSS. Поскольку мы хотим поддерживать отдельные файлы CSS, мы используем два дополнительных плагина:
- Mini-css-extract-plugin извлечет каждую таблицу стилей в отдельный файл в качестве одного из этапов процесса сборки.
- Webpack-fix-style-only-entries используется для исправления проблемы в wepback 4, чтобы избежать создания дополнительного файла JS для каждого файла CSS, указанного в webpack-config.js.
Теперь вы внесете в проект некоторые изменения:
- Откройте проект Fav Kitties в Glitch.
- Чтобы просмотреть источник, нажмите Просмотреть источник.
- Нажмите Ремикс для редактирования, чтобы сделать проект доступным для редактирования.
- Нажмите Инструменты.
- Нажмите Журналы.
- Нажмите Консоль.
Чтобы минимизировать результирующий CSS, вы воспользуетесь optimize-css-assets-webpack-plugin:
- В консоли Glitch запустите
npm install --save-dev optimize-css-assets-webpack-plugin. - Запускаем
refresh, чтобы изменения синхронизировались с редактором Glitch.
Затем вернитесь в редактор Glitch, откройте файл webpack.config.js и внесите следующие изменения:
Загрузите модуль в начало файла:
Затем передайте экземпляр плагина в массив plugins:
После внесения изменений будет запущена перестройка проекта. Вот как будет выглядеть получившийся webpack.config.js:
Затем вы проверите результат этой оптимизации с помощью инструментов повышения производительности.
Если вы заблудились на каком-либо предыдущем шаге, вы можете нажать здесь, чтобы открыть оптимизированную версию сайта.
Чтобы проверить размер и содержимое файлов:
- Нажмите
Control+Shift+J(илиCommand+Option+Jна Mac), чтобы открыть DevTools. - Перейдите на вкладку Сеть.
- Нажмите на фильтр CSS.
- Установите флажок Отключить кеш, если он еще не установлен.
- Перезагрузите приложение.
Вы можете проверить эти файлы и убедиться, что новые версии не содержат пробелов. Оба файла намного меньше, в частности, animate.css был уменьшен на ~ 26%, что позволило сэкономить ~ 20 КБ!
В качестве последнего шага:
- Откройте страницу измерения.
- Введите URL-адрес оптимизированного сайта.
- Нажмите Просмотреть отчет.
- Нажмите Эффективность и найдите раздел Возможности.
В отчете больше не отображается «Сократить CSS» как «Возможность», и он теперь перемещен в раздел «Пройденные проверки»:
Поскольку файлы CSS являются ресурсами, блокирующими рендеринг, если вы примените минификацию на сайтах, которые используют большие файлы CSS, вы можете увидеть улучшения таких показателей, как First Contentful Paint.
Следующие шаги и ресурсы
В этом руководстве мы рассмотрели минификацию CSS с помощью webpack, но тот же подход можно использовать и с другими инструментами сборки, такими как gulp-clean-css для Gulp или grunt-contrib-cssmin для Grunt. .
Минификация также может применяться к другим типам файлов. Ознакомьтесь с Руководством по уменьшению и сжатию сетевых данных, чтобы узнать больше об инструментах для минимизации JS и некоторых дополнительных методах, таких как сжатие.