divmagic Make design
SimpleNowLiveFunMatterSimple
Как GitHub повысил производительность, отправляя больше CSS – и как вы можете сделать то же самое
Blogs›CSS›Как GitHub повысил производительность, отправляя больше CSS – и как вы можете сделать то же самое
CSS

Как GitHub повысил производительность, отправляя больше CSS – и как вы можете сделать то же самое

Как GitHub повысил производительность, добавив больше CSS – и как вы можете сделать то же самое

В смелом инженерном шаге GitHub недавно подробно описал свой полный переход от CSS-in-JS к написанному вручную, хорошо структурированному чистому CSS. Результат? Резкий скачок скорости сайта и улучшение пользовательского опыта. Это не возврат к старым методам; это тщательно продуманная стратегия, которая доказывает: добавление большего количества CSS на самом деле может ускорить ваш сайт. В этом глубоком погружении мы разберем путь GitHub, технические обоснования, прирост производительности и то, как такие инструменты, как DivMagic, делают этот подход доступным каждому фронтенд-разработчику.

34%
improvement in Largest Contentful Paint

CSS-in-JS произвел революцию в нашем подходе к изолированным стилям и компонентной архитектуре, но он имел скрытые издержки. Внедрение стилей во время выполнения, увеличенные пакеты JavaScript и более медленное время парсинга побудили многие высоконагруженные сайты пересмотреть свои стратегии стилизации. GitHub, одна из самых посещаемых платформ для разработчиков в мире, решила изменить подход: убрать уровень абстракции и с самого начала предоставлять легковесные статические CSS-файлы.

Парадокс производительности CSS-in-JS

Долгие годы команды использовали библиотеки CSS-in-JS, такие как styled-components или Emotion, из-за преимуществ для разработчиков: автоматический критический CSS, изоляция, динамические стили и совместное размещение. Но по мере масштабирования приложений эти преимущества часто имеют свою цену.

ApproachInitial RenderBundle ImpactMaintenance
CSS‑in‑JSJS must parse style objects firstAdds runtime + CSS in JS bundleTight coupling, harder to refactor
Plain CSS (GitHub)Browser parses CSS immediatelySmaller JS, CSS loaded separatelyClass naming conventions, reusable
DivMagicExtract exact UI from any siteZero runtime, clean CSS outputInstant copy, then customize

Таблица выше показывает разительный контраст. Собственный анализ GitHub показал, что размер JavaScript-пакета был раздут из-за кода времени выполнения CSS-in-JS и определений стилей, которые могли быть статическими. Хуже того, эти стили должны были быть распаршены и внедрены JavaScript до того, как браузер мог начать отрисовку, что задерживало First Contentful Paint (FCP) и Largest Contentful Paint (LCP).

25%
faster Time to Interactive on github.com

Переместив все стили в отдельные CSS-файлы, GitHub устранил накладные расходы времени выполнения. Браузер мог загружать и парсить CSS параллельно с HTML, разблокируя рендеринг. Показатели Core Web Vitals сайта улучшились по всем направлениям, что является критическим фактором как для пользовательского опыта, так и для SEO.

Миграция: больше CSS, но более умный CSS

Инженерная команда GitHub – Джош Блэк и Мари Люкка – описали свой процесс в подробной записи в блоге. Вместо полной перезаписи они выбрали стратегию компонент за компонентом, преобразуя каждый элемент интерфейса из CSS-in-JS в чистый CSS, сохраняя при этом нулевое время простоя.

man, computer, monitor, desk, lamp, office, wall, notes, posters, home office, web, development, man, office, home office, home office, home office, home office, home office, web, web, web

40%
reduction in CSS payload size

Это может показаться нелогичным: как можно добавить больше CSS, но уменьшить полезную нагрузку? Ответ кроется в удалении мертвого кода и разделении критического CSS. В мире CSS-in-JS многие стили генерировались динамически, часто включая недостижимые правила или чрезмерно специфичные селекторы. Проведя аудит фактической поверхности интерфейса, GitHub удалил неиспользуемые стили и использовал такие инструменты, как PurgeCSS, для удаления всего, что не отображается на текущей странице.

Performance Metrics Comparison: CSS-in-JS vs Plain CSS

Команда также вложила значительные средства в надежный конвейер сборки, который мог выполнять tree-shaking CSS так же, как и JavaScript. Они внедрили этап «встраивания критического CSS», который извлекает стили, необходимые для контента «над сгибом», и встраивает их в <head>, в то время как остальное загружается асинхронно. Этот шаблон, известный как «прогрессивная загрузка CSS», гарантировал, что страница становится интерактивной быстрее без мерцания нестилизованного контента.

Показатели производительности, которые говорят сами за себя

Миграция GitHub улучшила не только синтетические бенчмарки; данные реального мониторинга пользователей (RUM) рассказали ту же историю. Давайте посмотрим на несколько ключевых цифр:

100%
of github.com migrated to plain CSS
  • Largest Contentful Paintулучшился на 34%, перейдя из категории «требует улучшения» в «хорошо» по шкале Core Web Vitals от Google. -Time to Interactiveстал на 25% быстрее, что означает, что пользователи могли взаимодействовать со страницей раньше. -Размер CSS-полезной нагрузкиснизился на 40%, несмотря на переход от стилей, генерируемых JS, к статическим файлам. -First Input Delayпочти исчез для большинства сессий, так как главный поток стал менее загружен вычислениями стилей.

Эти улучшения были не просто техническими победами; они напрямую привели к лучшему вовлечению и снижению показателя отказов на github.com.

«Мы были удивлены, насколько простое удаление абстракции CSS-in-JS улучшило наш конвейер рендеринга. Браузер умеет эффективно обрабатывать CSS – нам просто нужно было позволить ему делать свою работу.» – Инженерная команда GitHub

Почему это важно для каждого фронтенд-разработчика

Вы можете подумать: «Я не управляю платформой размером с GitHub, так зачем мне это?» Ответ в том, что те же принципы применимы в любом масштабе. CSS-in-JS вводит зависимость, которая может замедлить ваш сайт на сотни миллисекунд – а в веб-производительности каждая миллисекунда на счету.

Современные браузеры невероятно оптимизированы для парсинга чистого CSS. Они могут создавать CSSOM (объектную модель CSS) в отдельном потоке, эффективно кэшировать его и применять к DOM, не прерывая выполнение JavaScript. Когда вы генерируете стили через JavaScript, вы нарушаете этот конвейер и заставляете браузер ждать.

Как DivMagic вписывается в рабочий процесс с чистым CSS

Воссоздание точных стилей сложного UI-компонента может быть утомительным и чреватым ошибками процессом. Вот гдеDivMagicстановится революционным инструментом. Как расширение для браузера, DivMagic позволяет скопировать любой элемент интерфейса с любого сайта и мгновенно получить чистый, многократно используемый CSS и HTML. Вместо того чтобы инспектировать элементы и собирать стили по частям, вы можетескопировать весь внешний вид одним кликом.

technology, computer, code, javascript, developer, programming, programmer, jquery, css, html, website, technology, technology, computer, code, code, code, code, code, javascript, javascript, javascript, developer, programming, programming, programming, programming, programmer, html, website, website, website

Представьте, что вы обнаружили красиво оформленный компонент карточки на сайте конкурента. С помощью DivMagic вы выбираете элемент, и расширение извлекает точные CSS-правила – никакого JavaScript, никакого времени выполнения, только нужные вам стили. Затем вы можете вставить их в таблицу стилей вашего проекта, настроить имена классов и придерживаться вашей дизайн-системы.

GitHub's Page Load Time Improvement During Migration

Это идеально соответствует философии GitHub по доставке большего количества CSS (хорошего качества) без накладных расходов. DivMagic генерирует готовый к производству CSS, который является статическим, поддается tree-shaking и полностью находится под вашим контролем. Он обходит необходимость в промежуточных слоях CSS-in-JS, позволяя вам создавать быстрые и легковесные интерфейсы.

За пределами копирования: создание библиотеки компонентов

Многие разработчики используют DivMagic как исследовательский инструмент. Они собирают UI-паттерны с лучших продуктов, изучают CSS-архитектуры и адаптируют их в свои собственные библиотеки компонентов. Поскольку вывод представляет собой чистый CSS, он бесшовно интегрируется с любым фреймворком – React, Vue, Svelte или ванильным HTML.

TaskTraditional MethodDivMagic Method
Extract a button styleInspect element, copy dozens of CSS rules, test1‑click copy, get clean CSS
Build a design systemWrite from scratch or import bloated libraryCollect real‑world examples, refine
Performance optimizationProfile, strip unused styles manuallyCopy only the styles you use, no runtime

Уроки миграции GitHub

Если вы рассматриваете аналогичный переход от CSS-in-JS, вот несколько практических выводов:1. Проведите аудит существующих стилей– Запустите такие инструменты, как PurgeCSS, или вручную проверьте, какие правила реально используются в продакшене. Вы часто обнаружите 30–50% неиспользуемого CSS. 2.Примените подход критического CSS– Встройте минимальные стили, необходимые для первой отрисовки, а остальные отложите. Такие инструменты, как Critical или кастомные плагины Webpack, могут автоматизировать этот процесс. 3.Используйте CSS-переменные– Они уменьшают повторение и делают настройку тем тривиальной. Отличный пример — новая система дизайн-токенов GitHub. 4.Используйте BEM или функциональный CSS– Выберите схему именования, которая предотвращает конфликты без изоляции во время выполнения. 5.Тестируйте постепенно – Мигрируйте по одному компоненту за раз и отслеживайте производительность с помощью Real User Monitoring.

«Самым большим откровением стало то, что обычный CSS при хорошей организации масштабируется гораздо лучше, чем мы когда-либо представляли, — даже на таком сложном сайте, как GitHub».

Примите простоту

История успеха GitHub — это мощное напоминание о том, что иногда лучший инструмент — это тот, который браузеры уже отлично понимают. Поставляя больше CSS — тщательно проработанного, очищенного и разделённого, — они подарили своим пользователям более быстрый и плавный опыт, упростив при этом собственный стек разработки.

website, web design, development, code, programming, marketing, office, business, agency, website, website, web design, web design, web design, web design, web design, agency

С DivMagic эта простота теперь доступна каждому проекту. Вы можете избежать трений CSS-in-JS, извлекать любой понравившийся UI и сосредоточиться на создании отличного пользовательского опыта. В следующий раз, когда вы собираетесь import styled from 'styled-components', спросите себя: может ли обычный CSS сделать это лучше? Ответ может быть просто «да».

Начните создавать с помощью DivMagic сегодня

Присоединяйтесь к более чем 10 000 разработчиков, дизайнеров и владельцев бизнеса, чтобы копировать код с любого веб-сайта и использовать его в своих проектах.

Get DivMagic for 42% off

Limited time deal for 22:45