• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Разработка ускоренной главной страницы BBC News

Разработка ускоренной главной страницы BBC News +14

24.04.2017 15:31
puagardian 7 4500 Источник
ReactJS*
Веб производительность это то, что меня беспокоит как разработчика, чья работа затрагивает миллионы людей по всему миру, так и пользователя, который часто получает доступ к веб используя медленное и ненадежное соединение. Я часто и громко жаловался, что сайт BBC News неоправданно медленный, поэтому когда мне предоставилась возможность помочь перестроить одну из самых посещаемых страниц на BBC News — я ухватился за этот шанс.

Это был апрель 2016. Сейчас, спустя год, мы готовы начать поэтапный переход на новую главную страницу. Начиная с небольшого процента пользователей из Великобритании, мы постепенно переведем всех на новую главную страницу в течении нескольких недель. Если же вам нетерпится увидеть её прежде чем переход будет завершен, она доступна по адресу www.bbc.co.uk/news/0

Быстрые факты о новой главной странице


  • Она более легкая и быстрая, чем предыдущая:
  • Сайт доступен через HTTPS и в ближайшем будущем мы планируем перенаправлять на него весь незащищенный трафик.
  • Страница основана на React компонентах, которые стилизованы нашим CSS фреймворком Grandstand.
  • Каждый компонент это горизонтальный «ломтик» страницы, который собирает свои данные. Это облегчает для нас использование «ломтиков» на любой странице.
  • Все компоненты React рендерятся с помощью нашего React-component-as-an-API-endpoint сервиса и соединяются в страницу page-assembly-as-a-service сервисом.
  • React используется только на сервере. Мы не загружаем его на стороне браузера.
  • Команда разработчиков состоит из пяти разработчиков и одного тестировщика, но мы также сотрудничаем с более чем 60 разработчиками и тестировщиками со всего BBC.

Что дальше?


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

Улучшение производительности


Несмотря на то что мы уже существенно улучшили её производительность, все еще много работы только предстоит сделать:

  • Первая значимая отрисовка все еще длинная. Мы можем улучшить её загружая основной CSS раньше.
  • Мы все еще отправляем слишком много байт пользователю. Большая часть из этого — инлайн стили, которые используются только в IE8 (Обновление: Мы уже отправили pull request чтобы удалить треть этих стилей).
  • Пересчет стилей и макетов идет слишком долго на маломощных устройствах. Это все еще требует изучения.
  • Мы основательно связаны «белой панелью BBC», расположенной вверху страницы. Эта панель содержит компоненты из других частей BBC: поиск, уведомления и BBC ID. Все эти компоненты загружают свой блокирующий CSS и Javascript перед ресурсами главной страницы. Хотя это навряд изменится в ближайшем будущем, мы надеемся поработать с командами которые разрабатывают эти компоненты чтобы уменьшить их влияние на производительность.

Усовершенствование дизайна


Чтобы запустить главную страницу быстрее, мы пошли на многие компромисы с UX и редакторской командами по поводу дизайна страницы. После того как мы закончим с внедрением, мы будем улучшать визуальную часть блока историй (промо) чтобы выделить истории корреспондентов и избранные частицы. Текущий дизайн выглядит так:

image

Ниже одно из предложений как мы можем показывать другие типы промо:

image

React в браузере


На раннем этапе мы решили что React в браузере будет излишним для страницы на которой в основном статичные тексты и изображения. Влияние на произодительность от объединения такого количества Javascipt'а и выполнения его в браузере также непозволительно высокое. Даже используя рендеринг на стороне сервера, эмулируемые мобильные устройства тратили на выполнение скриптов и прорисовку почти в 4 раза больше времени когда React был запущен на странице.

image

Без React на странице

image

Влияние React в браузере

В нашем текущем подходе мы собираем Javascript по старинке, отдельно от компонентов React. Однако мы заметили что это не может долго масштабироваться, поэтому в конце концов нам придется найти способ использовать компоненты React в браузере, не влияя на производительность. Решения к которым мы присматриваемся включают:

  • Использование Preact вместо React.
  • Конвертация наших компонентов в stateless functional components где это возможно, чтобы уменьшить их размер.
  • Использовать умное разделение кода чтобы иметь возможность подгружать второстепенный код по запросу.

Источник перевода
Поделиться с друзьями
-->

Комментарии (7)


  1. ivan386
    24.04.2017 21:01
    #10189218
    -2

    Мы основательно связаны «белой панелью BBC», расположенной вверху страницы. Эта панель содержит компоненты из других частей BBC: поиск, уведомления и BBC ID.

    В чём проблема заместо неё оставить пустой div который будет держать место под неё а контент скинуть вниз? Потом в css ей выставить


     #panel{position: absolute; top: 0}


  1. Analitik_Telecom
    24.04.2017 23:52
    #10189442

    А правда, что сайт BBC America сделан на Вордпресс?


    1. defaultvoice
      25.04.2017 02:42
      #10189534
      +1

      Правда
      http://www.bbcamerica.com/wp/wp-login.php


  1. Areso
    25.04.2017 05:17
    #10189548
    -1

    1200 ms — жуткий стыд. Причем это явно не PIV тестировали. И таких вот порталов — овердофига.


    1. dimka11
      25.04.2017 18:32
      #10190834

      Возможно, просто устройство медленное.


      1. Areso
        26.04.2017 12:19
        #10191728

        А на медленном устройстве 1200 ms легко превратятся в 12000ms.
        К примеру, у меня есть одноплатный микрокомпьютер Raspberry Pi, и с него пользоваться интернетом — настоящая боль, даже по проводному подключению. Но для истинных ценителей с Raspberry Pi надо выходить в интернет при помощи лимитированного EDGE/3G соединения, ну, чтобы понять, каково это.
        Я понимаю, что у большинства высокооплачиваемых разработчиков установлено современное и производительное оборудование (потому что их работа стоит приличных денег), но мерить надо производительность не рабочими станциями программистов, а вычислительными мощностями, которые укладываются как минимум в 95% разброс. Иначе — потеря в конверсии и всё такое.


  1. ACPrikh
    27.04.2017 09:28
    #10193366

    Они там слишком загрузили домашнюю страницу. Тут что не делай — будет тупить. Надо приготовить презентацию, что это не баг, а богатая фича BBC. И всё будет оки.

МЕТКИ

  • Хабы
  • Теги

ReactJS

перевод с английского

ReactJS

web performance optimization

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Руководство по созданию выдающегося портфолио +10

    • 28.04.2017 20:30

    Разработка ускоренной главной страницы BBC News +14

    • 24.04.2017 15:31

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
08:05

Почему не бывает лифтов на Arduino? Как работает плата от станции управления +40

08:50

Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp* +28

08:00

Цифровая гигиена в облаке: фильтруем трафик с помощью групп безопасности +26

08:47

Гонзо-репортаж, русская лингвистика и много плюсов: лучшее из хабраблога МойОфис за 10 лет +17

09:01

TIG сварка в домашней мастерской. Текущее дооснащение +15

06:18

Воздушно-тепловые завесы в дверях и на больших воротах: физика процесса и экономика применения устройств +13

08:15

Как создатель ZIP, Фил Катц победил в войне форматов, но проиграл в собственной +11

08:35

Goffeeйнная гуща: актуальные инструменты и особенности группировки GOFFEE в атаках на Россию +9

07:07

Вайб-кодинг и реальное программирование на С++ +8

12:20

Исследователь + менеджер продукта. Как синхронизироваться, а не вставлять друг другу палки в колеса +7

11:00

Ранг-селект словари +7

08:43

Почувствуй себя рибосомой. Как устроен современный дизайн белков +7

08:26

I2C Slave на STM32G4 +7

07:02

Как прийти в IT и не облажаться: мой путь от новичка до руководителя группы тестирования в «Столото» +7

08:00

Понять хаос: сложный мира муравьев и мух +6

09:12

Самый лучший мок на свете: разбираемся с инструментами для генерации моков в Go +5

04:59

Зачем инженерам философия? Памяти Владимира Аршинова +5

09:55

Дрейф Terraform: как незаметно сломать инфраструктуру +4

08:00

Артефакты архитектуры: какие, зачем и как их организовать +4

06:35

Осторожно! Фишинг через фейковые вакансии Web3: кейс NowSync.app +4

09:26

Расследование: отечественные микросхемы в счетчиках электроэнергии – миф или реальность? +72

18:13

Монитор качества воздуха Zigbee своими руками +42

09:01

Чем различаются гитарные усилители? +39

12:35

Demoded: разбор олдскульных демо-эффектов на примере +32

11:36

От массивов до объектов в JavaScript: пособие для новичков +31

07:05

Плазменная антенна — как альтернатива металлическим конструкциям +29

04:42

Начальник контролировал всё: ввел отчеты по часам, просил скрин экрана и считал походы в туалет +29

13:01

Как не попасть на плохой хостинг: топ-15 признаков +28

19:04

Партийная номенклатура и развитие промышленности в КНР: чему меня научили в коммунистической бизнес школе +26

11:58

Shardman. Краткое пособие архитектора +25

04:34

Первый Спутник, язык FORTH и немного о JIT-компиляции +25

08:16

Мой опыт создания огромной книги по математике в LaTeX +23

07:00

Самое дорогое удаление зубов мудрости +22

10:35

Как используются динтаблицы YTsaurus: рекламные профили поведенческого таргетинга +21

08:05

Выгорание в IT. Как распознать первые сигналы и не сгореть +21

07:50

Через диммеры — к звездам +17

12:00

Как я встроил процесс тренировок в свою жизнь (и собрал спортзал дома, вложив $400 в течение 2-х лет) +16

10:55

Падение Data Mart и 100 миллиардов записей в ОЗУ. История о том, как починить в одиночку вендорский баг +16

21:29

Медицина 2050 +15

14:05

Нейро-дайджест: ключевые события мира AI за 3 неделю августа 2025 +15

05:16

ICN Holding: самая кринжовая финансовая пирамида в мире +177

07:00

Знакомьтесь — это скутоид! И он часть вашего организма +102

07:28

Звонки через Jabber в докер-контейнере за 5 минут +76

13:01

Как меня едва не уволили из Apple (в первый раз) +73

12:27

Батин стол айтишника-удаленщика +58

14:05

Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 1. Эволюция модулей и базовые понятия +56

22:10

Прогресс без доступа к его плодам: парадокс деградирующей медицины +51

08:56

Как адаптировать аналитику для тех, кто не хочет разбираться в графиках +49

08:10

Как фанфик по Гарри Поттеру стал лучшей книгой по рациональному мышлению для программистов +39

12:28

Паттерны проектирования в Python, о которых следует забыть +38

16:20

Тест новых аккумуляторов GP ReENERGY +36

09:01

Большие стройки новых ЦОДов в РФ на паузе, но спрос и цены продолжают расти +32

08:00

Вы не знаете TDD +26

09:21

Опасный пассив на балансе: технический долг в вашей инфраструктуре +23

08:02

Дневник инженера: часть 1. IPS в NGFW. Не только про сети, но и про безопасность +19

13:37

LLM и их хрупкая логика: новое исследование ставит под сомнение Chain-of-Thought +18

08:00

AI-помощник на запястье: как мы сделали умные часы с YandexGPT +17

13:44

Почему квантовая электродинамика — самая точная теория в истории науки? +16

11:47

UX-исследование в Китае: как обойти культурные барьеры и собрать полезные инсайты +16

15:16

Одиночный забег. Часть 1: Как я поднял сервер Lineage 2 +15

ОБСУЖДАЕМОЕ

  • Батин стол айтишника-удаленщика +58

    • 204   50000

    Прогресс без доступа к его плодам: парадокс деградирующей медицины +51

    • 83   8100

    Начальник контролировал всё: ввел отчеты по часам, просил скрин экрана и считал походы в туалет +29

    • 78   39000

    Как я решила проблему ухода за котом во время отпуска: автономный лоток + смарт-кормушка с камерой +11

    • 67   18000

    Как фанфик по Гарри Поттеру стал лучшей книгой по рациональному мышлению для программистов +39

    • 55   23000

    Вы не знаете TDD +26

    • 55   5300

    Звонки через Jabber в докер-контейнере за 5 минут +76

    • 55   15000

    ICN Holding: самая кринжовая финансовая пирамида в мире +179

    • 51   22000

    Расследование: отечественные микросхемы в счетчиках электроэнергии – миф или реальность? +72

    • 44   13000

    Подключение к нескольким Linux-серверам по SSH без ввода пароля: пошаговое руководство -9

    • 44   7100

    Passkeys как альтернатива CAPTCHA: миф или будущее? -1

    • 41   1100

    Медицина 2050 +15

    • 39   1600

    Знакомьтесь — это скутоид! И он часть вашего организма +102

    • 38   35000

    Почему не бывает лифтов на Arduino? Как работает плата от станции управления +33

    • 37   6900

    Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp* +28

    • 35   5900
  • Главная
  • Контакты
© 2025. Все публикации принадлежат авторам.