CSS оптимизация – делаем загрузку сайтов более быстрой
Занимаясь оптимизацией своих сайтов, большинство веб-мастеров (автор сего блога не исключение), совершенно забывают про оптимизацию каскадных таблиц стилей (CSS), как одной из составных частей любого интернет-ресурса.
Вынесение стилей отображения различных элементов страниц в отдельный файл безусловно ускоряет загрузку страниц сайта, поскольку CSS-файл кэшируется браузером (если такая функция ему дозволена) и в последующем подгружает его не из Интернета, а прямо с Вашего компьютера.
Но даже в таком случае можно получить еще больший эффект от использования каскадных таблиц стилей (которые порой занимают десятки килобайт кода), оптимизировав этот самый CSS.
И вот тут на помощь приходят простые и удобные в использовании он-лайн сервисы – CSS-оптимизаторы.
Путем поиска в Гугле нашлось несколько подобных инструментов, готовых помочь разрешить поставленную задачу (все сервисы буржуйские):
Что выполняют данные сервисы для получения результата. Они объединяют однородные классы, удаляют ненужные свойства, пробелы, отступы и так далее. В результате получается нечитабельный для веб-мастера код, однако при оптимизации наибольшего в размере файла CSS разница в загрузке страниц становится значительной.
Многие пользователи широкополосного Интернета не увидят в этом смысла, поскольку большинство сайтов у них открывается быстро. Но представьте себе: если каждый сайт станет загружаться хотя бы на 10% быстрее, то сколько времени Вы сохраните за неделю, месяц? А за год? При этом стоит учитывать и факт экономии трафика. Она тоже может стать впечатляющей. Ведь (перефразирую известную пословицу) килобайт мегабайт бережет ;).
Что тестировалось
Для тестирования результатов оптимизации я использовал файлы CSS следующий сайтов:
Хабрахабр – новости интернет-индустрии;
news2 – Новости 2.0;
iXBT.com – IT-новости;
Данный блог.
Дабы ничего не усложнять, настройки оптимизаторов я оставлял по умолчанию. Будем считать, что они оптимальны и предназначены для среднего юзера.
Результаты тестирования
Сервис / После оптимизации / Уменьшение, % / Комментарии
Первым тестился Хабрахабр с его 40.69 килобайтовым CSS.
CSS Optimizer / 23.25 KB / 42.86% / Уменьшилась высота строк, потеряли жирность некоторые заголовки, уменьшился шрифт некоторых ссылок. В принципе, даже эти недочеты не мешают удобству просмотра страницы, поскольку изменения касаются второстепенных элементов.
Clean CSS / 29.13 KB / 30.1% / Никаких изменений не произошло.
CSS Compressor / 21.69 KB / 46.7% / Также никаких изменений.
Следующими идут «Новости 2.0». Размер CSS – 18.15 KB.
CSS Optimizer / 10.46 KB / 42.34% / Практически никаких изменений не произошло, кроме незначительного увеличения шрифта в двух строках. В целом на юзабилити это никак не отразилось.
Clean CSS / 11.40 KB / 38.7% / Все осталось на месте.
CSS Compressor / 8.94 KB / 50.74% / Увеличились отступы, потеряли центровку некоторые элементы, испортились стили для некоторых типов ссылок.
Теперь тестим iXBT.com. Размер CSS – 15.47 KB.
CSS Optimizer / 11.60 KB / 25.06% / Правая колонка уплывает вниз, что однозначно сказывается на юзабилити.
Clean CSS / 11.74 KB / 24.4% / Совсем незначительное изменение отступов в некоторых местах.
CSS Compressor / 7.32 KB / 51.75% / Полнейшее искажение внешнего вида страницы. Ее просто не узнать.
Последним в тест попадает CSS моего блога. Его размер – 12.02 KB.
CSS Optimizer / 7.60 KB / 36.75% / Исчезает белый фон, изменяются отступы некоторых элементов и высота строк.
Clean CSS / 9.65 KB / 24.5% / Все на своих местах.
CSS Compressor / 4.74 kB / 60.54% / Полностью теряется форматирование страницы. «Ни в какие ворота не лезет».
Делаем выводы
Оптимальные результаты в соотношении качество/размер показал сервис Clean CSS. CSS, оптимизированный через него, на всех тестируемых сайтах все оставил на своих местах. Причем размер файла в среднем ужимается на целую треть. Помимо этого сам код, при настройках по умолчанию, не сгребается в кучу, а остается таким же читаемым, как в исходном варианте.
Более того, сервис показывает полный лог изменений, т.е. что и в какой строке было подкорректировано, а код отображается с подсветкой синтаксиса. Посему данный сервис заслуживает похвалы и его смело можно использовать для целей оптимизации CSS файлов.
Пользоваться остальными двумя вариантами – CSS Optimizer и CSS Compressor – стоит только в конкретном случае, «примерив» на сайте корректность работы оптимизированного стилевого файла.
Таким образом, оптимизация CSS может значительно ускорить загрузку сайтов без необходимости внесения кардинальных изменений в структуру страниц. Да и стоит учитывать, что все еще большАя часть интернет-пользователь подключается по диалапу.
И напоследок.
Перед оптимизацией CSS-файлов с помощью одного из указанных инструментов я бы посоветовал сохранять оригинальный, удобочитаемый файл стилей, дабы в будущем можно было, как и прежде, с удобством вносить в него необходимые поправки.
* * *
Онлайн-покер является в последнее время весьма популярным занятием, которое позволяет людям становится финансово обеспеченными. Ты можешь скачать покер и стать одним из них.
Улучшение скорости загрузки сайта. Часть 2. Оптимизация CSS и JavaScript файлов
Вторым шагом после изображений подумайте об оптимизации ваших CSS и JavaScript файлов. Не забывайте всегда минимизировать эти файлы. По умолчанию CSS являются ресурсом, который блокирует отрисовку страницы в браузере. Это значит, что браузер остановит создание HTML элементов пока не загрузит и не прочтет весь ваш CSS. Поэтому всегда минимизируйте CSS, а также удалите неиспользуемые стили. Это особенно важно если Вы используете какой-нибудь CSS фреймворк (на вряд ли вы используете все стили фреймворка). PurgeCSS может помочь Вам автоматизировать процесс удаления неиспользуемых стилей. Если это возможно для Вас, постарайтесь при загрузке страницы загружать только критический CSS, а загрузку остального CSS отложить, пока страница полностью не загрузится. Критический CSS – это CSS, который необходим для стилизации только той части страницы, которая находится в области видимости экрана при загрузке страницы.
JavaScript
Постарайтесь сократить размер JavaScript файлов настолько, насколько это возможно и помните, что JavaScript файл – это не изображение, браузеру кроме того, что загрузить JS файлы нужно их еще и обработать, что занимает определенное время и ресурсы. Именно от размера JavaScript и от скорости его выполнения зависит такой очень важный показатель как скорость загрузки до взаимодействия. То есть может быть такое, что страница полностью загружена, а пользователь все еще не может с ней взаимодействовать или отклик страницы на действия происходит с большой задержкой. Это значит, что браузер еще не обработал весь JavaScript код.
Ленивая загрузка JavaScript’а
Также старайтесь откладывать загрузку большого JS кода (файла), который не используется на всех страницах. Например, у Вас может быть компонент весом в 100-200 килобайт, который используется только на одной странице, а загружается на всех страницах. Постарайтесь разделить Ваш JavaScript на несколько кусочков(файлов) и загружать каждый из них только там, где он необходим. Этого легко можно добиться с помощью таких сборщиков как Webpack.
Влияние JS на отрисовку страницы
И помните, создание HTML страницы идет сверху вниз, и если браузер по пути отрисовки страницы встретит JS, он «поставит на паузу» отрисовку страницы пока не скачает (если необходимо) и не выполнит его. Поэтому старайтесь, чтобы ваш основной JS файл подключался ниже всего основного HTML, желательно перед закрывающимся тегом body, чтобы не задерживать отрисовку необходимого HTML. Если вы подключаете JS файл не внизу страницы, то используйте атрибут defer при подключении скрипта, что укажет браузеру на то, что это скрипт нужно обрабатывать только после того, как вся страница будет полностью отрисована.
Сокращение времени ответа сервера
Есть еще один из самых важных пунктов для улучшение скорости загрузки страницы. Это сокращение времени ответа от сервера или времени до получение первого байта (TTFB – Time to first byte). TTFB – это время, которое необходимо, чтобы отправить запрос от клиента (браузера) и получить первый байт данных от веб сервера.
Этот пункт является, пожалуй, самым сложным для оптимизации, потому что он затрагивает довольно много аспектов, многие из которых специфичны для используемых инструментов, подходов к реализации, фреймворков или CMS. И поэтому нет какого-то универсального решения. Но зато есть несколько советов, на что нужно обратить внимание:
Используйте сервер с хорошей производительностью
Чем быстрее ваш сервер читает или записывает данные и быстрее обрабатывает различные процессы тем быстрее ваш сайт вернет ответ пользователю.
Используйте последние версии
Старайтесь использовать самые последние версии языков программирования, фреймворков, библиотек, CMS, веб сервера или чего-либо еще, что работает на вашем сервере, чтобы пользоваться всеми преимуществами обновлений по производительности, которые могли быть выпущены. Так, PHP 7.0 дает прирост производительности в 180% по сравнению с предыдущей версией 5.6
Оптимизируйте запросы к Базе Данных
Посмотрите, может быть вы столкнулись с проблемой n+1, не добавили индексы там, где необходимо или запрашиваете много неиспользуемых данных.
Используйте кэширование
Каждый раз, когда пользователь делает запрос, на сервере делается запрос в базу данных (БД), генерируется HTML из данных и возвращается клиенту. Представьте, если у Вас сайт, на котором вы обновляете контент раз в неделю. Но все равно каждый раз, когда ваш сайт открывается, будет происходить запрос в базу данных, даже если информация не обновлялась. Поэтому, когда первый раз пользователь делает запрос на определенные данные вы можете получить их из БД, показать их пользователю и кэшировать (сохранить локально) эти данные на неделю (например). И после этого, в течение недели, все, кто будут открывать эту страницу уже не будут делать запрос в базу данных каждый раз, а им будет показываться сохраненная копия этих данных. Это будет уменьшать время загрузки страницы и нагрузку на сервер. В некоторых случаях вы можете кэшировать не только данные из БД, а страницы целиком.
Оптимизируйте скорость установления защищенного соединения SSL
Если вы используете SSL, установление защищенного соединения требует больше времени чем незащищенного. Вы можете сделать это самостоятельно или использовать инструменты, которые могут помочь Вам в этом, например Cloudflare. Cloudflare будет выступать как посредник между пользователями и Вашим сайтом, все запросы будут проходить через него. Cloudflare также может справиться с DDoS атаками, которыми может быть подвержен Ваш сайт. Если не обращать на это внимания Ваш сайт может загружаться медленнее после установки SSL.
Кэшируйте статические ресурсы
К ним относятся JS, CSS, файлы, шрифты и изображения. Когда пользователь заходит на Ваш сайт Вы можете дать браузеру выбрать откуда ему брать ресурсы, и это может оказать существенное влияние на время загрузки сайта. Вы можете сохранять статические ресурсы в браузере, когда пользователь первый раз заходит на Ваш сайт. Это и есть кэширование. Вы можете безопасно кэшировать статические ресурсы на долгое время: на 6 месяцев или даже на год. Cloudflare также может кэшировать все статические ресурсы на Вашем сайте. Но, что делать если за это время Вы изменили контент этих файлов, но не изменили название, например добавили пару строчек в свой JS файл? Изменить название файла! Но вы не можете постоянно менять название, но можете добавить какой-нибудь хэш как строку запроса, когда запрашиваете файл. Например, “/js/app.js?v=123456”. Вы будете запрашивать один и тот же файл, но технически для браузера это уже будет другой файл, который еще не был кэширован. Вы можете делать это вручную или, опять же, автоматизировать этот процесс с помощью сборщиков. Это называется контроль версий (versioning) или очистка кэша (cache busting).
CDN
Используйте сеть доставки контента (CDN) для статических ресурсов. Когда пользователь запрашивает изображение (например) с Вашего сайта, он должен отправить запрос к Вашему серверу, независимо от того, где находится пользователь и Ваш сервер. CDN может помочь минимизировать расстояние от клиента до ресурса. CDN – это группа серверов, разбросанных по всему миру, которые работают вместе, чтобы предоставить контент пользователю с того сервера, который находится максимально близко к нему. CDN с одним из самым большим количеством серверов по всему миру — это Cloudflare. Как вы видите есть несколько преимуществ начать использовать Cloudflare. Для большинства сайтов бесплатный тариф будет более чем достаточным. (Они не платят мне J)
Conclusion
Попробуйте применить эти несложные советы для оптимизации скорости загрузки Вашего сайта, и я уверен время его загрузки существенно сократится.
Оптимизация JS и CSS | Корректная загрузка ресурсов сайта — SEO на vc.ru
уменьшение объема кода, CSS и HTML оптимизаторы, валидация
Содержание статьи
Оптимизировать код HTML и каскадные таблицы стилей (CSS) нужно для того, чтобы ускорить процесс загрузки сайта и контента, размещенного на нем. Экономия времени и трафика, в целом, спустя долгий срок после оптимизации, получится существенной, даже если внешне изменение скорости будет не очень заметно.
Оптимизация HTML-кода
Для того чтобы HTML-код способствовал быстрой загрузке сайта, он должен соответствовать нескольким условиям:
Быть простым и информативным. Проверив его на валидность, нужно исправить ошибки, чтобы ботам было легче анализировать его. Код должен четко представлять структуру страницы.
Основные составляющие страниц, такие как заголовки, указатели, блоки информации должны быть легко и быстро определяемы.
Освобождение кода от лишних сведений, вынесение их в отдельные файлы (например, можно вынести CSS и JS), повысит скорость загрузки, что также упрощает работу ботов.
Добившись выполнения этих условий, сайт можно сделать более быстрым, удобным и повысить эффективность индексации его ботами поисковых систем.
Уменьшение объема кода и оптимизация CSS
Сделать код сайта проще можно, уменьшив его объем. Для этого нужно выполнить несколько операций.
Прежде всего, следует избегать флеш-технологий, JavaScript, фреймов, текста, представленного картинкой. Все элементы, какие возможно, следует оформить в отдельных, внешних файлах (например, CSS и JS, как уже отмечалось выше). Помогут для оптимизации кода специальные плагины. К примеру, можно установить плагин Autoptimize, который автоматически оптимизирует код HTML, CSS, JS (если поставить соответствующие галочки). Необходимо настроить грамотную и удобную навигацию по сайту, которая будет понятна пользователям и корректно распознаваема поисковиками. Это увеличит скорость, качество загрузки и индексации сайта.
Что касается оптимизации CSS, то ее можно сделать самостоятельно или доверить это специальному ресурсу или программе. Ручная оптимизация – трудоемкий и длительный процесс, к тому же можно пропустить какие-то ошибки. Программа или сервис для оптимизации качественнее устранят недостатки, но могут нарушить некоторые функции, которые работали на сайте, и после проверки может некорректно отображаться контент, поэтому их работу нужно корректировать.
Некоторые способы улучшить структуру CSS в ручном режиме:
Удалить лишние пробелы и разрывы строк, которые перегружают файл CSS и затрудняют работу роботов;
Прописывать обобщающие свойства вместо несколько раз повторяющихся похожих команд;
Использовать лаконичные, понятные описания в комментариях;
Необычные шрифты прописывать при помощи стилей, а не изображений;
Для картинок создавать alt и title (разные для каждого изображения), чтобы их содержание распознавалось ботами поисковых систем;
Применять к заголовкам инструменты h2 – и далее, чтобы они корректно распознавались при индексации;
Прописывать в keywords только те ключевые слова, которые используются на странице, минимизировать их количество;
Использовать разнообразные и краткие мета-теги.
CSS и HTML оптимизаторы
Удобно и быстро осуществить оптимизацию непосредственно в браузере можно при помощи специальных сервисов, например:
CleanCSS.com;
CSS Optimizer;
CSS Compressor;
CY-PR.com;
плагин Autoptimize.
Специалисты в SЕО и IT советуют пользоваться CleanCSS.com, так как он позволяет выбрать степень сжатия от низкой до высочайшей или подобрать индивидуальные настройки. После высокого и высочайшего уровней оптимизации код сайта принимает практически нечитаемый вид, и вносить в него изменения будет практически невозможно. Поэтому для начала следует воспользоваться стандартной оптимизацией. Можно выбрать режимы сжатия конкретного контента или оптимизацию отдельных параметров: сжатие шрифтов, изображений, удаление пробелов.
Также программа позволит сохранить результат в файле, в том числе в виде текста с отчетом о произведенных изменениях, подсветкой синтаксиса.
На ресурсе CY-PR.com также есть похожий инструмент для оптимизации, который облегчает структуру CSS на 25-30%, но здесь нет возможности сформировать файл с кодом после выполнения операции.
Остальные сервисы достаточно радикально могут поменять код так, что некоторые функции на сайте перестанут работать. Поэтому с их помощью лучше производить только локальные изменения в конкретных параметрах сайта.
После оптимизации следует проверить работоспособность сайта, корректное отображение дизайна, скорость загрузки. Нормальной считается ситуация, когда страницы и пользовательские опции сайта загружаются не более 3-5 секунд.
Для того чтобы проверить степень оптимизации и понять, насколько эффективно теперь прописан HTML-код, можно воспользоваться такими сервисами, как:
optimization.com;
Портал seo-чеклист;
плагин Firebug.
Эти инструменты помогут проверить, все ли сделано для уменьшения объема HTML-кода и улучшения его структуры. На ресурсе SEO-чеклист можно проверять по списку, что уже было сделано для оптимизации, а что – еще нет, и устанавливать пометку на совершенных делах.
Валидация
Проверить код сайта на наличие ошибок можно при помощи сервисов проверки валидации – валидаторов. Эффективная проверка кода осуществляется с помощью validator.w3c.org
Если система при первой проверке выдаст более полутысячи ошибок, не стоит расстраиваться. После исправления определенного недочета, можно запускать проверку снова и ошибок станет намного меньше, так как один недостаток влечет за собой другие и при его исправлении они исчезнут.
Сайт с исправленным и оптимизированным кодом имеет больше шансов на высокие позиции в выдаче, чем ресурс с перегруженным HTML-кодом, в котором присутствуют ошибки.
Ускоряем работу сайта за счёт оптимизации CSS
Время загрузки и отрисовки сайта в браузере можно заметно снизить, если воспользоваться следующими советами.
Если какие-то стили не нужны на странице — их надо отключить. В процессе разработки часто подключаются те стили, которые потом не используются. Например, стили для отладки или стили для подключенных скриптов, которые не используются. Не надо заставлять пользователя загружать ненужные файлы.
Загружайте стили с поддоменов, с других доменов или CDN — файлы с одного домена загружаются в ограниченное число потоков, количество этих потоков даже у самых продвинутых браузеров не более десяти. Поэтому если картинок, файлов стилей и скриптов на странице много, то некоторым из них придется ждать своей очереди. Лимит количества потоков распространяется только на домен, поэтому если CSS-файлы будут загружаться с другого домена, то скорость загрузки возрастет за счёт параллельности.
Блокирующие отрисовку страницы стили не должны загружаться с нестабильных внешних доменов. Если используемый для загрузки внешний домен перестанет отвечать или станет отвечать с длительной задержкой, то существенно замедлится загрузка вашего сайта. Если используете внешние домены, то убедитесь, что они достаточно стабильно работают.
CSS надо сжать, минимизировать и оптимизировать. Удаление пробелов, комментариев, переносов строк, сокращение кодов цветов и другие оптимизации уменьшают размер файлов и ускоряют загрузку. При использовании сторонних библиотек — просто подключайте минимизированную версию. Для собственных скриптов используйте специальные библиотеки, сжимающие и оптимизирующие CSS, — CSSO или YUI Compressor.
Совместно используемые стили должны быть объединены в один файл. Загрузка одного большого файла осуществляется быстрее загрузки множества небольших файлов такого же размера. Выгрузка всех стилей в одном большом файле меньше грузит сервер, плюс к этому, сжатие также эффективнее работает на больших файлах.
Используйте GZIP для сжатия данных. Почти все современные браузеры могут обрабатывать сжатые в GZIP стили CSS. Оптимальный способ — предварительное сжатие используемых CSS-файлов на максимальном (девятом) уровне компрессии и последующая отдача веб-сервером уже сжатых файлов. Сжатие «на лету» вызывает нагрузку на процессор сервера, поэтому его на нагруженных проектах не стоит использовать.
Кэшируйте CSS на стороне клиента — не заставляйте пользователей многократно скачивать один и тот же файл: задайте соответствующие заголовки в ответе веб-сервера (Expires или Cache-Control max-age + Last-Modified или ETag).
Сократите каскады в CSS — на «слабых» устройствах быстрее отрисовываются страницы, где для определения стиля элемента не требуется обработка многократно вложенных правил.
Ускорение Работы Сайта — Оптимизация CSS, HTML и JavaScript
Sait
access_time
15 сентября, 2017
hourglass_empty
2мин. чтения
Введение
Оптимизация (минификация) — это процесс удаления каких-либо ненужных символов, которые не нужны для выполнения кода. Минификация кода увеличит скорость загрузки вашей страницы, что приведет к довольным посетителям и лучшей работе поисковых систем. Проще говоря, это процесс удаления ненужных пробелов, новых строк, комментариев и разделителей блоков из вашего кода. Эти типы символов используются для более удобного чтения и визуальных целей, однако, они не обязательны для правильного выполнения кода. Как результат, оптимизация CSS, HTML и JavaScript ускорит время скачивания, разбора и выполнения кода.
Что вам понадобится
Перед тем, как вы начнете это руководство, вам понадобится следующее:
На данном этапе мы рекомендуем использование GTMetrix. После анализа тестового сайта WordPress, мы получили список файлов, которые могут быть оптимизированы.
Шаг 2 — Замена неоптимизированных файлов
ВАЖНО! Безопасность прежде всего. Перед сохранением каких-либо изменений, убедитесь в наличии резервной копии вашего сайта или отдельных файлов, которые будут заменены.
Вариант 1 — Ручная замена
Одним из преимуществGTMetrix является возможность мгновенного просмотра оптимизированных версий CSS, JS и HTML файлов, по нажатию кнопки See optimized version(Увидеть оптимизированную версию) возле файла. После этого, оптимизированный файл может быть либо скачан, либо открыт в браузере. Замените старые файлы используя FTP клиент или скопируйте и замените сам код.
Вариант 2 — CMS плагины
Пользователи WordPress могут использовать для достижения тех же целей такие плагины как Better WordPress Minify или W3 Total Cache. Вы можете обратиться к этому руководству для более подробной инструкции по установке плагина W3 Total Cache.
Вариант 3 — CloudFlare
CloudFlare — это бесплатный сервис который ускоряет и защищает ваш сайт выступая в качестве прокси между посетителем и сервером сайта. Он предлагает защиту от DDoS атак, и что самое главное, он бесплатный. Одна из функций которую включает в себя бесплатный тариф, это оптимизация CSS, HTML и JS. Вы можете включить оптимизацию ресурсов в разделе Speed → Auto-Minify:
ВАЖНО! Не рекомендуется использовать оптимизацию CloudFlare, если вы уже используете CMS плагины для оптимизации. Также, CloudFlare не оптимизирует сторонние скрипты и ссылки (Facebook, VK, Twitter)
Шаг 3 — Тестирование изменений
После замены файлов/кода на их оптимизированную версию, последним этапом станет проверка изменений. Вы можете сделать это запустив повторный анализ на сайте GTMetrix. Для сравнения, вот результаты тестового сайта после замены файлов на оптимизированные:
Заключение
В этом кратком руководстве вы научились, как ускорить работу сайта оптимизацией CSS, JavaScript and HTML.
Руководства по теме:
Highload.today — медиа для разработчиков
Софт —
3 дня назад
Как автоматизировать копирование файлов
На многих проектах есть необходимость копирования огромных файлов — размером 0,5 Гб и более. Например, это может понадобиться для получения последней версии сборки разрабатываемого продукта. В процессе копирования могут возникать сбои или обрывы коннекта, и тогда копирование приходится начинать снова. Хочу поделиться с вами простым скриптом для Windows, который поможет автоматизировать этот процесс, сделать его проще, быстрее и надежнее.
Тестирование —
4 дня назад
Editorial
Тестирование фронтенда на примере React-приложения
Мало кто из разработчиков сомневается в эффективности тестирования, но на практике тестируется часто только бэкенд. Да еще и встречается убеждение, что фронтенд не имеет отношения к реальной разработке программного обеспечения, даже с учетом того, что во многих случаях полностью проработанный бэкенд просто не может существовать без фронтенда.
Фронтенд —
1 неделя назад
Editorial
NPM CLI v7 — пять самых важных фич
В феврале 2021 года стал широко доступен апдейт NPM CLI до версии 7. Это одно из важнейших обновлений, в котором был представлен новый функционал и другие важные настройки, упрощающие процесс управления пакетами. Команда разработчиков смогла решить некоторые из распространенных проблем, с которыми сталкивались пользователи. Подробным обзором пяти новых возможностей NPM CLI v.7 поделился разработчик Сахан Амарша (Sahan Amarsha) в материале для Bits and Pieces. Ну а мы в свою очередь спешим поделиться его выводами с вами.
Фронтенд —
1 неделя назад
Editorial
Tailwind CSS: за и против
По данным опроса The State of CSS 2020, больше всего разработчиков в мире, использующих CSS-фреймворки, сейчас заинтересованы в изучении и применении Tailwind CSS. Он опережает конкурентов в этом рейтинге уже второй год подряд. Команда Tailwind предлагает альтернативный подход для поддержки и стилизации HTML-разметки, но у него есть и свои противники. Проштудировав статьи и комментарии на таких ресурсах, как Dev.to, Product Hunt и Codeburst, мы собрали наиболее популярные доводы за и против использования этого фреймворка.
Софт —
1 неделя назад
Editorial
На каком ПО летают на Марсе?
18 февраля состоялось историческое событие, НАСА успешно посадила ровер Perseverance (в переводе на русский — “Настойчивость”) на Марс. Казалось бы, ничего необычного? НАСА проделывала это уже не раз в поиске ответа на вечный вопрос: есть ли жизнь на Марсе?
Мобильные приложения —
1 неделя назад
Editorial
Как сделать из веб-сайта веб-приложение (а главное — зачем?)
В своем блоге индийский разработчик Шашват Верма (Shashwat Verma) рассказал, как преобразовать веб-сайт или веб-страницу в прогрессивное веб-приложение (PWA). В качестве примера программист создал PWA из простой классической игры Simon на основе HTML5 (вот ее гитхаб-репозиторий), которую после преобразования можно устанавливать в формате веб-приложения на устройства Android и iOS.
Рисование страницы без стилей, а затем ее перекрашивание после анализа стилей было бы неудобно для пользователя. По этой причине CSS блокирует рендеринг, если браузер не знает, что CSS в настоящее время не нужен. Браузер может рисовать страницу после загрузки CSS и построения объектной модели CSS. Браузеры следуют определенному пути рендеринга: рисование происходит только после макета, что происходит после создания дерева рендеринга, которое, в свою очередь, требует и DOM, и CSSOM-деревьев.Чтобы оптимизировать конструкцию CSSOM, удалите ненужные стили, минимизируйте, сжимайте и кешируйте его и разбивайте CSS, который не требуется при загрузке страницы, на дополнительные файлы, чтобы уменьшить блокировку рендеринга CSS.
Оптимизация для блокировки рендеринга
CSS может ограничивать стили для определенных условий с помощью медиа-запросов. Медиа-запросы важны для отзывчивого веб-дизайна и помогают нам оптимизировать критический путь рендеринга. Браузер блокирует рендеринг до тех пор, пока он не проанализирует все эти стили, но не заблокирует рендеринг для стилей, которые он знает, что он не будет использовать, таких как таблицы стилей печати.Разделив CSS на несколько файлов на основе медиа-запросов, вы можете предотвратить блокировку рендеринга во время загрузки неиспользуемого CSS. Чтобы создать неблокирующую ссылку CSS, переместите не используемые сразу стили, такие как стили печати, в отдельный файл, добавьте в разметку HTML и добавьте медиа-запрос, в данном случае заявив, что это таблица стилей печати.
По умолчанию браузер предполагает, что каждая указанная таблица стилей блокирует рендеринг. Сообщите браузеру, когда следует применить таблицу стилей, добавив атрибут media с медиа-запросом. Когда браузер видит таблицу стилей, он знает, что ему нужно применить ее только для определенного сценария, он все равно загружает таблицу стилей, но не отображает блок. Разделив CSS на несколько файлов, главный файл блокировки рендеринга, в данном случае стили .css , намного меньше, что сокращает время блокировки рендеринга.
Анимация на GPU
Браузеры оптимизированы для обработки CSS-анимации и обрабатывают свойства анимации, которые не очень хорошо запускают перекомпоновку (и, следовательно, также перерисовку). Для повышения производительности анимируемый узел можно переместить из основного потока на графический процессор. Свойства, которые приведут к компоновке, включают 3D-преобразования ( transform: translateZ () , rotate3d () и т. Д.), анимация преобразования и непрозрачности , положение : фиксированное , изменит , а фильтр . Некоторые элементы, включая , и , также находятся на собственном уровне. Когда элемент продвигается как слой, также известный как составной, свойства преобразования анимации выполняются в графическом процессоре, что приводит к повышению производительности, особенно на мобильных устройствах.
изменит свойство
CSS изменит свойство сообщает браузерам, какие свойства элемента должны измениться, что позволяет браузерам настраивать оптимизацию до фактического изменения элемента, повышая производительность за счет выполнения потенциально дорогостоящей работы перед требуется.
будет-изменение: непрозрачность, преобразование;
Свойство
font-display
Применительно к правилу @ font-face свойство font-display определяет, как файлы шрифтов загружаются и отображаются в браузере, позволяя тексту отображаться с резервным шрифтом во время загрузки шрифта , или не загружается. Это повышает производительность, делая текст видимым вместо пустого экрана, а компромиссом является мигание нестилизованного текста.
@ font-face {
семейство шрифтов: someFont;
src: url (/ путь / к / fonts / someFont.woff) формат ('woff');
font-weight: 400;
стиль шрифта: нормальный;
шрифт-дисплей: резерв;
}
Свойство
contain
Свойство CSS contain позволяет автору указать, что элемент и его содержимое, насколько это возможно, независимы от остальной части дерева документа. Это позволяет браузеру пересчитывать макет, стиль, раскраску, размер или любую их комбинацию для ограниченной области модели DOM, а не для всей страницы.
7 принципов чистого и оптимизированного CSS — Smashing Magazine
Об авторе
Тони Уайт ведет персональное шоу «Спросите CSS Guy», дневной блог, посвященный изучению веб-дизайна на CSS и JavaScript техники, а также…
Больше о
Тони
↬
Некоторые из вас, возможно, помнят дни, когда 30 КБ был рекомендованным максимальным размером веб-страницы, значением, которое включало HTML, CSS, JavaScript, Flash и изображения.Я считаю, что с каждым новым проектом, даже с малейшей степенью сложности, незадолго до этого идеальные 30 КБ становятся недосягаемыми. Учитывая популярность макетов CSS и веб-страниц, обогащенных JavaScript, нередко, особенно для крупных сайтов, файлы CSS выходят далеко за пределы 30 КБ.
Некоторые из вас могут вспомнить дни, когда 30 КБ был рекомендованным максимальным размером веб-страницы, значением, которое включало HTML, CSS, JavaScript, Flash и изображения. Я считаю, что с каждым новым проектом, даже с малейшей степенью сложности, незадолго до этого идеальные 30 КБ становятся недосягаемыми.
Учитывая популярность макетов CSS и веб-страниц, обогащенных JavaScript, нередко, особенно для крупных сайтов, файлы CSS значительно превышают эти 30 КБ.
Но есть некоторые принципы, которые следует учитывать во время и после написания CSS, чтобы помочь сохранить его целостность и оптимизировать. Оптимизация — это не просто минимизация размера файла — это еще и упорядоченность, отсутствие беспорядка и эффективность. Вы обнаружите, что чем больше у вас знаний об оптимальных методах CSS, тем меньше размер файла неизбежно станет прямым результатом их внедрения.
Возможно, вы уже знакомы с некоторыми принципами, упомянутыми ниже, но их стоит рассмотреть. Знание этих концепций поможет вам написать оптимизированный код CSS и сделает вас более универсальным веб-дизайнером.
1. Используйте стенографию
Если вы еще не набрали стенографию , вы опоздали на вечеринку. Но, к счастью, эта вечеринка никогда не заканчивается. Использование сокращенных свойств — самый простой способ сократить код (и время написания).Нет лучшего времени, чем настоящее, чтобы начать эту эффективную практику программирования или пересмотреть ее.
Margin , border , padding , background , font , list style и даже outline — все это свойства, которые позволяют сокращать (и это даже не обширный список!).
Сокращение CSS означает, что вместо использования разных объявлений для связанных свойств…
p {margin-top: 10px;
поле справа: 20 пикселей;
нижнее поле: 30 пикселей;
маржа слева: 40 пикселей; }
… вы можете использовать сокращенные свойства для объединения этих значений следующим образом:
p {margin: 10px 20px 30px 40px; }
Если указать другое количество значений, браузеры будут интерпретировать правила определенным образом, как показано на диаграмме ниже.
Иллюстрация интерпретации сокращенных объявлений в зависимости от того, сколько значений указано для свойства. Этот порядок также применяется к padding и border-width среди других свойств.
Шрифт — еще одно полезное сокращенное свойство, которое помогает сэкономить место и количество нажатий клавиш.
Примеры сокращенного свойства шрифта. Примечание: если оставить некоторые значения неуказанными, это будет означать, что эти свойства будут сброшены на свои начальные значения.
Это всего лишь два примера сокращений, но их ни в коем случае нельзя считать исчерпывающим руководством. Даже если вы знакомы с приведенными выше правилами, обязательно просмотрите статьи, упомянутые ниже, чтобы получить более полезные напоминания о тех мощных свойствах, которые помогают сохранять лаконичность вашего кода. Из-за количества сохраненных строк и символов переход от предыдущей версии файла CSS, в которой не использовались сокращенные свойства, к версии, в которой полностью используются сокращения, может существенно повлиять на размер файла.
См. CSS Shorthand Guide (dustindiaz.com) и Эффективный CSS с сокращенными свойствами (456bereastreet.com) для получения дополнительной информации о сокращенных свойствах.
2. Ax the Hacks
В блоге Джона Хика используются условные комментарии
Взломы мертвых браузеров безопасны, а взломы живых — нет. Ни один из них. Всегда.
Если вы похожи на меня, эти слова из статьи Питера-Пола Коха, написанной почти 5 лет назад, могут вас немного смутить.В конце концов, кто не использовал взломы Internet Explorer 6 и даже Internet Explorer 7? Как бы плохо мы ни хотели, чтобы IE6 располагался под шестью пикселями, на самом деле он еще далеко не мертв.
Но теперь мы знаем, что использование условных комментариев для обслуживания хаков корректирующих деклараций для IE6 и IE7 является общепринятой практикой, даже рекомендованной командой разработчиков Microsoft IE. Использование условных комментариев для обслуживания специфичных для IE правил CSS имеет дополнительное преимущество, заключающееся в обслуживании более чистого и, следовательно, меньшего размера CSS-файла по умолчанию для браузеров, более соответствующих стандартам, в то время как только те браузеры, которым требуется хакерский daiquri (т.е. IE) загрузит дополнительный вес страницы.
Вот как использовать условные комментарии для использования стилей только в Internet Explorer 6:
Для IE7 вы можете использовать указанное выше и заменить «7» на «6».
В качестве альтернативы, если есть простой способ получить желаемый результат с помощью CSS, при прочих равных условиях, дерзайте! Чем меньше хаков вам придется писать, тем проще и легче код.
3. Используйте пробелы с умом
Пробелы, включая пробелы, табуляции и дополнительные разрывы строк, важны для удобочитаемости. для кода CSS. Тем не менее, пробелы добавляют, даже если они незначительны, к весу страницы. Каждый пробел, перенос строки и табуляция, которые вы можете удалить, — это как если бы на один символ меньше.
Но это та область, где я бы не советовал вам экономить только на том, чтобы получить файл меньшего размера. По-прежнему важно, чтобы вы писали так, чтобы было удобно для вас (и, надеюсь, для других), и если это включает использование пробелов для форматирования, пусть будет так.В конце концов, если вы не можете прочитать это, вам будет трудно применять другие принципы, упомянутые в этой статье. Просто знайте, , , что пробел похож на воздух — возможно, вы не сможете его увидеть, но он действительно что-то весит.
На рисунке ниже показаны два разных крайних варианта стиля форматирования: с большим количеством пробелов и с очень небольшим количеством пробелов. Я предпочитаю вариант однострочного форматирования без вкладок , так как я могу сканировать селекторы немного проще, и я разрабатываю, используя всю ширину моего широкоэкранного монитора.Но это только я. Вы можете захотеть, чтобы ваши селекторы отображались вложенными, а ваши объявления — в каждой строке.
Иллюстрация двух крайностей в форматировании CSS: много пробелов и очень мало пробелов
Эффективное использование пробелов — это замечательно и рекомендуется для упрощения управления кодом, но имейте в виду, что чем меньше пробелов у вас есть , тем меньше размер файла. Даже если вы выберете работу с пробелами в своем рабочем файле, вы можете удалить их для производственной версии вашего файла CSS, чтобы ваши файлы оставались тонкими там, где это действительно важно.
4. Сократить фреймворки и сбросить
В CSS-фреймворке 960 Grid System Натана Смита используется правило сброса.
Если вы выбрали CSS-фреймворк (включая те, которые вы написали сами), найдите время, чтобы просмотреть документацию , а также каждую строку файла CSS. Вы можете обнаружить, что структура включает некоторые правила, которые вы не хотите использовать в своем текущем проекте, и их можно исключить. Кроме того, вы можете обнаружить, что фреймворк включает более элегантный и лаконичный способ достижения презентационных деталей, чем тот, который вы обычно используете, и знание о них может помочь предотвратить непреднамеренное дублирование наборов правил.
Это также относится к сбросам. YUI Grid CSS использует сброс, и сброс Эрика Мейера также очень популярен. Сброс удобен, потому что он помогает нейтрализовать стиль браузера по умолчанию. Но если вы знаете характер создаваемого вами сайта, вы можете найти некоторые декларации, которые, как вы знаете, вам никогда не понадобятся.
и , скорее всего, не будут использоваться в блоге рецептов моей тети Марты. В портфолио дизайна, вероятно, никогда не будет , , и т. Д.Так что откажитесь от того, что вам не нужно. Это не только нормально, но и поощряется даже Эриком Мейером:
Как я уже сказал на странице сброса, эти стили никому не следует оставлять в покое. Они отправная точка.
Создаем сами - Эрик Мейер (meyerweb.com)
Использование фреймворка и / или набора правил сброса может помочь оптимизировать вашу работу, но они не должны приниматься в их состоянии по умолчанию. Рассмотрение каждого объявления и сокращение количества ненужных может еще больше помочь вам сохранить ваши CSS-файлы компактными и удобочитаемыми.
5. Сделайте свой CSS перспективным
CSS Дуга Боумена раскрывает специально созданные селекторы, используемые для макета.
Еще один способ оптимизации кода - отделить объявления, относящиеся к макету, от остальных правил. Я слышал о вариантах отделения типографики и цветов от правил для конкретного макета в файле CSS. Мне никогда не нравилась эта практика, так как я не хочу повторять селекторы только потому, что у меня есть разные типы объявлений, которые нужно связать с ними.
Тем не менее, я подогреваю идею отделения стилей макета от остальных стилей и предоставления макету его собственного файла или, по крайней мере, его собственного раздела. Это также поддерживается в Transcending CSS Энди Кларка. В этой книге Кларк напоминает нам следующее:
Полные макеты CSS всегда были компромиссом. Текущие спецификации CSS никогда не предназначались для создания визуально насыщенных и сложных макетов интерфейса, которые требуются современной сети. Текущие методы - поплавки и позиционирование - никогда не предназначались как инструменты компоновки.
Превосходя CSS - Энди Кларк.
Один из способов интерпретации этого состоит в том, что поплавки и позиции для установки боковых панелей и столбцов - это, ну, макетные хаки . И хотя у нас действительно нет альтернативы, мы надеемся, что она будет, когда будет согласован стандарт макета и браузеры начнут их поддерживать. Когда это произойдет, должно быть легко заменить эти взломанные свойства блочной модели на те, которые предназначены для макета. Хотя пройдет некоторое время, прежде чем появятся новые модули макета, использование правильных свойств для обработки макета вместо компенсации причуд нашего текущего ограниченного набора свойств, безусловно, поможет уменьшить вес страницы.
6. Задокументируйте свою работу
В руководстве по разметке Дэвида Ши показано, как правильно использовать теги HTML и как они представлены на его сайте. Даже сайты без динамического HTML могут иметь это простое и эффективное руководство (конечно, с использованием собственного файла CSS!) В качестве отправной точки для документации.
Для команды дизайнеров очень важно, чтобы регулярно общался с , чтобы правила разметки и стиля создавались единообразно, а также для создания стандартов сайта.Например, если кто-то придумает способ разметки интерфейса вкладок для сайта, документация будет удерживать других от дублирования этих усилий, предотвращая раздувание кода в HTML и CSS.
Документация, включая руководства по разметке и руководства по таблицам стилей , предназначена не только для групповых усилий - они не менее важны для команды дизайнеров, состоящей из одного человека. В конце концов, через год после работы над другими вещами пересмотр одного из ваших собственных проектов может показаться вам совершенно чуждым. Ваше будущее может по достоинству оценить напоминание о том, как должна работать ваша сетка CSS, или о том, на каких страницах уже есть обработка для кнопки формы вторичного действия, и это избавит вас или кого-то еще от добавления избыточных и ненужных правил в ваш CSS.
Выбор использования документации имеет дополнительный побочный эффект - это отличное место для хранения объяснений, которые в противном случае должны быть включены в качестве комментариев CSS. Комментарии CSS отлично подходят для разделения кусков длинных файлов CSS, но подробные комментарии, которые используются для объяснения вариантов дизайна, могут увеличить размер файла и могут лучше подходить для разметки и руководства по стилю. Документирование кода с использованием комментариев CSS в рабочем файле определенно лучше, чем вообще ничего, но размещение этого материала в отдельной документации - отличный способ сохранить фокус кода и избавить его от раздувания.
7. Используйте сжатие
Было создано несколько отличных приложений для сжатия и оптимизации CSS, позволяющих вам обслуживать нечитаемые человеком, но все же удобные для браузера файлы, которые составляют лишь часть исходных рабочих копий. Такие приложения, как CSSTidy и YUI Compressor, могут сжимать пробелы, обнаруживать и исправлять свойства CSS, которые перезаписывают друг друга, и искать возможности для использования сокращений CSS, которые вы, возможно, пропустили. (Эти типы приложений являются отличными источниками для чтения, если не по другой причине, чтобы узнать, что вы можете делать вручную).
Даже популярные текстовые редакторы, такие как BBEdit, TextMate и TopStyle, могут помочь отформатировать файлы CSS по своему вкусу. Есть также варианты обслуживания zip-версий ваших файлов CSS с использованием PHP. Вы можете найти больше компрессоров и оптимизаторов CSS в статье Список инструментов CSS.
Важно отметить, что эти приложения делают все возможное, чтобы минимизировать ошибки, но они не всегда идеальны . Кроме того, они работают лучше всего, когда взломы браузера не включены в набор файлов (что является еще одной причиной сохранить эти взломы внешними).
Я хотел бы упомянуть еще один тип приложений, которые могут помочь уменьшить размер файла CSS. Он может сканировать веб-сайт и регистрировать, какие правила и объявления CSS применяются как , а не , а затем доводить их до вашего сведения. К сожалению, этот инструмент еще не изобретен, но я бы с удовольствием заплатил за такое приложение.
Я могу вспомнить времена, когда я боялся удалить определенные правила, потому что не было документации, объясняющей мне, что эти селекторы остались от предыдущих итераций разработки.Если приложение сможет довести эти правила до моего сведения, это поможет в обслуживании и сохранении компактности файлов CSS.
Заключение
Чистый и оптимизированный код важен не только для размера файла, но и для обслуживания и удобочитаемости. Вышеупомянутые принципы хороши не только для CSS, но и могут применяться к HTML, JavaScript и другим языкам программирования. Файлы CSS не так важны, как визуализация вашего веб-сайта для конечного пользователя, но рассмотрение вышеупомянутых принципов может помочь как с пользовательским интерфейсом (в виде файлов меньшего размера), так и с интерфейсом разработчика (более чистый код).Применяйте эти принципы к своим текущим и будущим проектам, и вы обязательно оцените приложенные усилия.
20 советов по оптимизации производительности CSS
В этой статье мы рассмотрим 20 способов оптимизации вашего CSS, чтобы он быстрее загружался, с ним было проще работать и он был более эффективным.
Согласно последним отчетам HTTP Archive, Интернет остается раздутым беспорядком с мифическим средним веб-сайтом, для которого требуется 1700 КБ данных, разделенных на 80 HTTP-запросов, и требуется 17 секунд для полной загрузки на мобильном устройстве.
Полное руководство по снижению веса страницы содержит ряд предложений. В этой статье мы сконцентрируемся на CSS. По общему признанию, CSS редко является самым серьезным виновником, и типичный сайт использует 40 КБ на пяти таблицах стилей. Тем не менее, вы все еще можете оптимизировать и изменить способы использования CSS, которые повысят производительность сайта.
Вы не сможете решить проблемы с производительностью, если не знаете, в чем заключаются ошибки. Браузерные DevTools - лучшее место для начала: запустите из меню или нажмите F12 , Ctrl + Shift + I или Cmd + Alt + I для Safari на macOS.
Все браузеры предлагают аналогичные возможности, и инструменты будут открываться медленно на плохо работающих страницах! Однако самые полезные вкладки включают следующие…
На вкладке Network отображается каскадный график ресурсов по мере их загрузки. Для достижения наилучших результатов отключите кеш и подумайте о снижении скорости сети. Ищите файлы, которые медленно загружаются, или блокируйте другие. Браузер обычно блокирует рендеринг браузера во время загрузки и анализа файлов CSS и JavaScript.
Вкладка Performance анализирует процессы браузера. Начните запись, выполните действие, например перезагрузку страницы, затем остановите запись, чтобы просмотреть результаты. Ищите:
Чрезмерное количество макета / перекомпоновки действий, при которых браузер был вынужден пересчитать положение и размер элементов страницы.
Дорогая раскраска экшенов, где меняются пиксели.
Составление действий, при которых нарисованные части страницы объединяются для отображения на экране.Обычно это действие с наименьшей загрузкой процессора.
Браузеры на базе Chrome предоставляют вкладку Audits , на которой запускается инструмент Google Lighthouse. Он часто используется разработчиками прогрессивных веб-приложений, но также дает рекомендации по производительности CSS.
Онлайн-опции
В качестве альтернативы используйте инструменты онлайн-анализа, на которые не влияют скорость и возможности вашего устройства и сети. Большинство может протестировать из других мест по всему миру:
2.Делайте большие победы первыми
CSS вряд ли будет прямой причиной проблем с производительностью. Однако он может загружать важные ресурсы, которые можно оптимизировать за считанные минуты. Примеры:
Активируйте сжатие HTTP / 2 и GZIP на своем сервере
Используйте сеть доставки контента (CDN) для увеличения количества одновременных HTTP-подключений и репликации файлов в другие места по всему миру
Удалите неиспользуемые файлы.
Изображения обычно являются основной причиной большого размера страницы, однако многие сайты не могут эффективно оптимизироваться:
Изменение размера растровых изображений.Смартфон начального уровня будет делать многомегапиксельные изображения, которые невозможно отобразить полностью на большом экране высокой четкости. Для некоторых сайтов требуются изображения шириной более 1600 пикселей.
Убедитесь, что вы используете соответствующий формат файла. Обычно JPG лучше всего подходит для фотографий, SVG - для векторных изображений, а PNG - для всего остального. Вы можете поэкспериментировать, чтобы найти оптимальный тип.
Используйте инструменты изображения, чтобы уменьшить размер файла за счет чередования метаданных и увеличения коэффициентов сжатия.
Тем не менее, имейте в виду, что x Кбайт данных изображения - это , а не эквивалент x Кбайт кода CSS.Двоичные изображения загружаются параллельно и требуют небольшой обработки для размещения на странице. CSS блокирует рендеринг и должен быть преобразован в объектную модель, прежде чем браузер сможет продолжить работу.
3. Заменить изображения эффектами CSS
Редко бывает необходимо использовать фоновые изображения для границ, теней, закругленных краев, градиентов и некоторых геометрических фигур. Определение «изображения» с помощью кода CSS требует значительно меньшей полосы пропускания, и его легче изменить или анимировать позже.
4. Удалите ненужные шрифты
Службы
, такие как Google Fonts, позволяют легко добавлять пользовательские шрифты на любую страницу.К сожалению, одна или две строки кода могут получить сотни килобайт данных шрифта. Рекомендации:
Используйте только нужные шрифты.
Загружайте только нужные веса и стили - например, римский шрифт, вес 400, без курсива.
По возможности ограничивайте наборы символов. Шрифты Google позволяют выбирать определенные символы, добавляя значение & text = к URL-адресу шрифта, например fonts.googleapis.com/css?family=Open+Sans&text=SitePon для отображения «SitePoint» в Open Sans.
Рассмотрите вариативные шрифты, которые определяют несколько значений веса и стилей путем интерполяции, чтобы файлы были меньше. В настоящее время поддержка ограничена Chrome, Edge и некоторыми выпусками Safari, но она должна быстро расти. См. Как использовать вариативные шрифты.
Учитывайте шрифты ОС. Ваш веб-шрифт размером 500 КБ может быть фирменным, но заметит ли кто-нибудь, если вы переключитесь на общедоступные Helvetica или Arial? Многие сайты используют пользовательские веб-шрифты, поэтому стандартные шрифты ОС гораздо реже, чем были!
5.Избегайте
@import
Ат-правило @import позволяет включать любой файл CSS в другой. Например:
Кажется, это разумный способ загрузки более мелких компонентов и шрифтов. Это не . @import правила могут быть вложенными, поэтому браузер должен загружать и анализировать каждый файл последовательно.
Несколько тегов в HTML будут загружать файлы CSS параллельно, что значительно эффективнее, особенно при использовании HTTP / 2:
Впрочем, могут быть и более предпочтительные варианты…
6. Объединение и минимизация
Большинство инструментов сборки позволяют объединить все части в один большой файл CSS, в котором удалены ненужные пробелы, комментарии и символы.
Конкатенация менее необходима для HTTP / 2, который передает и мультиплексирует запросы. В некоторых случаях отдельные файлы могут быть полезны, если у вас есть небольшие, регулярно меняющиеся ресурсы CSS.Однако большинству сайтов, вероятно, будет выгодна отправка одного файла, который немедленно кэшируется браузером.
Минификация может не принести значительных преимуществ, если у вас включен GZIP. Тем не менее, реальных недостатков нет.
Наконец, вы можете рассмотреть процесс сборки, который последовательно упорядочивает свойства в объявлениях. GZIP может максимизировать сжатие, когда в файле используются часто используемые строки.
7. Используйте современные методы макета
В течение многих лет для разметки страниц было необходимо использовать CSS float .Техника - это хитрость. Это требует большого количества кода и настройки полей / отступов, чтобы макеты работали. Даже в этом случае поплавки будут ломаться при меньших размерах экрана, если не будут добавлены медиа-запросы.
Современные альтернативы:
CSS Flexbox для одномерных макетов, которые (могут) переноситься на следующую строку в соответствии с шириной каждого блока. Flexbox идеально подходит для меню, галерей изображений, карточек и т. Д.
CSS Grid для двумерных макетов с явными строками и столбцами. Сетка идеально подходит для макетов страниц.
Оба варианта проще в разработке, в них используется меньше кода, они могут адаптироваться к любому размеру экрана и отрисовываются быстрее, чем плавающие, потому что браузер изначально может определить оптимальную компоновку.
8. Уменьшите код CSS
Самый надежный и быстрый код - это код, который вам никогда не нужно писать! Чем меньше ваша таблица стилей, тем быстрее она будет загружена и проанализирована.
Все разработчики начинают с хорошими намерениями, но со временем CSS может раздуться по мере увеличения количества функций. Легче сохранить старый ненужный код, чем удалить его и что-то сломать.Несколько рекомендаций для рассмотрения:
Остерегайтесь больших фреймворков CSS. Вы вряд ли будете использовать большой процент стилей, поэтому добавляйте модули только по мере необходимости.
Организуйте CSS в файлы меньшего размера (части) с четкими обязанностями. Удалить виджет карусели проще, если CSS четко определен в widgets / _carousel.css .
Рассмотрите методологии именования, такие как БЭМ, для помощи в разработке дискретных компонентов.
Избегайте глубоко вложенных объявлений Sass / препроцессора.Расширенный код может стать неожиданно большим.
Избегайте использования ! Important для отмены каскада.
Избегайте встроенных стилей в HTML.
Инструменты, такие как UnCSS, могут помочь удалить избыточный код путем анализа вашего HTML, но будьте осторожны с состояниями CSS, вызванными взаимодействием JavaScript.
9. Держитесь за Каскад!
Развитие CSS-in-JS позволило разработчикам избегать глобального пространства имен CSS. Обычно во время сборки создаются случайно сгенерированные имена классов, поэтому конфликт компонентов становится невозможным.
Если ваша жизнь была улучшена с помощью CSS-in-JS, продолжайте использовать его. Однако лучше понимать преимущества каскада CSS, чем работать против него в каждом проекте. Например, вы можете установить шрифты, цвета, размеры, таблицы и поля формы по умолчанию, которые универсально применяются к каждому элементу в одном месте. Объявлять каждый стиль в каждом компоненте требуется редко.
10. Упростите селекторы
Даже самые сложные селекторы CSS занимают миллисекунды для синтаксического анализа, но снижение сложности приведет к уменьшению размеров файлов и облегчению синтаксического анализа браузера.Вам действительно нужен такой селектор ?!
body> main.main> section.first h3: nth-of-type (odd) + p :: first-line> a [href $ = ". Pdf"]
Опять же, будьте осторожны с глубоким вложением в препроцессоры, такие как Sass, где могут быть непреднамеренно созданы сложные селекторы.
11. Опасайтесь дорогой недвижимости
Некоторые свойства отображаются медленнее, чем другие. Для дополнительной дряблости попробуйте разместить тени на всех ваших элементах!
Производительность браузера будет отличаться, но, как правило, все, что вызывает пересчет перед рисованием, будет более затратным с точки зрения производительности:
граница-радиус
тень коробки
непрозрачность
преобразование
фильтр
позиция: фиксированная
12. Принять CSS-анимацию
Нативные переходы и анимация CSS всегда будут быстрее, чем эффекты на основе JavaScript, которые изменяют те же свойства.CSS-анимация не будет работать в старых браузерах, таких как IE9 и ниже, но эти пользователи никогда не узнают, чего им не хватает.
Тем не менее, избегайте анимации ради этого. Незначительные эффекты могут улучшить взаимодействие с пользователем без отрицательного влияния на производительность. Излишняя анимация может замедлить работу браузера и вызвать у некоторых пользователей укачивание.
13. Избегайте анимации дорогих объектов недвижимости
Анимация размеров или положения элемента может привести к изменению макета всей страницы в каждом кадре.Производительность можно улучшить, если анимация влияет только на этап композитинга . Наиболее эффективное использование анимации:
непрозрачность и / или
, , преобразование для перемещения (перемещения), масштабирования или поворота элемента (исходное пространство, в котором использовался элемент, не изменяется).
Браузеры часто используют графический процессор с аппаратным ускорением для визуализации этих эффектов. Если ни один из них не идеален, подумайте о том, чтобы убрать элемент из потока страницы с position: absolute , чтобы его можно было анимировать в своем собственном слое.
14. Укажите, какие элементы будут анимированы
Свойство will-change позволяет авторам CSS указывать, что элемент будет анимирован, чтобы браузер мог заранее оптимизировать производительность. Например, чтобы объявить, что к элементу будет применено преобразование :
.myelement {
будет-изменить: преобразовать;
}
Можно определить любое количество свойств, разделенных запятыми. Однако:
используйте заменит как последнее средство для устранения проблем с производительностью
не применяйте его ко многим элементам
дайте ему достаточно времени для работы: то есть не запускайте анимацию сразу.
15. Принять изображения SVG
Масштабируемая векторная графика (SVG) обычно используется для логотипов, диаграмм, значков и более простых диаграмм. Вместо того, чтобы определять цвет каждого пикселя, как растровые изображения JPG и PNG, SVG определяет формы, такие как линии, прямоугольники и круги в XML. Например:
Simpler SVG меньше, чем эквивалентные растровые изображения, и их можно бесконечно масштабировать без потери четкости.
SVG может быть встроен непосредственно в код CSS в качестве фонового изображения. Это может быть идеальным для небольших многоразовых значков и позволяет избежать дополнительных HTTP-запросов. Например:
.mysvgbackground {
background: url ('data: image / svg + xml; utf8, ') центр центр без повтора;
}
16. Стилизация SVG с помощью CSS
Чаще SVG встраиваются непосредственно в документ HTML:
<круг cx = "400" cy = "300" r = "50" />
Это добавляет узлы SVG непосредственно в DOM. Следовательно, все атрибуты стиля SVG можно применить с помощью CSS:
.
круг {
ширина штриха: 1em;
}
.mysvg {
ширина штриха: 5 пикселей;
ход: # f00;
заполнить: # ff0;
}
Объем встроенного кода SVG уменьшен, и стили CSS можно повторно использовать или анимировать по мере необходимости.
Обратите внимание, что использование SVG в теге или в качестве фонового изображения CSS означает, что они отделены от DOM, и стили CSS не будут иметь никакого эффекта.
17. Избегайте растровых изображений Base64
Стандартные растровые изображения JPG, PNG и GIF могут быть закодированы в строку base64 в URI данных. Например:
кодировка base64 обычно на 30% больше, чем ее двоичный эквивалент
браузер должен проанализировать строку, прежде чем ее можно будет использовать
изменение изображения делает недействительным весь (кешированный) файл CSS.
Хотя выполняется меньше HTTP-запросов, это редко дает заметное преимущество - особенно по HTTP / 2-соединениям. В общем, избегайте встраивания растровых изображений, если изображение вряд ли будет часто меняться, а результирующая строка base64 вряд ли будет превышать несколько сотен символов.
18. Учитывайте критический код CSS
Те, кто использует инструменты анализа страниц Google, часто будут видеть предложения «встроенный критический CSS» или «уменьшить количество таблиц стилей, блокирующих рендеринг» .Загрузка файла CSS блокирует рендеринг, поэтому производительность можно улучшить, выполнив следующие действия:
Извлеките стили, используемые для визуализации элементов над сгибом. Могут помочь такие инструменты, как criticalCSS.