• Главная
  • Контакты
Подписаться:
  • 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

Подписка


ЛУЧШЕЕ

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

Там, где сфальсифицировали все*, или как физик частиц результаты ЕдРа в СПб считал +25

07:05

Стартуем? 183 года истории факса +18

08:01

Как работают сетевые неймспейсы внутри Docker‑контейнера +17

09:46

Поворот на Восток +15

07:03

Рецензия на книгу «Практическое руководство для архитекторов решений» +14

06:50

Обзор нововведений в C# 15 +11

09:02

Изучаем многозадачность FreeRTOS на примере создания логгера для STM32 +10

08:44

Между Сциллой и Харибдой: как и зачем мы ограничиваем ИИ-агентов +10

08:42

Как я перестал относиться к ИИ как к человеку: опыт соло-разработки двух пет-проектов +7

09:10

Можно ли прочитать мысли нейросети +5

07:41

Как Cloudflare сэкономила 100 терабайт памяти, оптимизировав DNS-кеш сервиса 1.1.1.1 +5

09:19

Какие доклады участники INFOSTART TECH EVENT 2026 оценили выше всего +4

08:40

Делаем электрический мотор для лодки +4

10:11

SIEM на двух ядрах для 150 хостов и 9B-модель на триаже: как устроен самописный AI SOC +3

09:26

Вы учите языки неправильно. 5 правил полиглотов, которые сэкономят годы +3

09:26

Что изучить в инфраструктуре этой осенью — от VXLAN и OSPF до Kubernetes и GitOps +3

08:34

Мы нанимали за хард, а увольняли за софт-скиллы, и это нужно было исправить +3

07:11

Почему ваш «чистый» дизайн убивает конверсию в половине мира +3

06:36

Алюминиевый король Поднебесной: Aluminum Corporation of China +3

06:23

Слепой краш-тест 27 LLM осени 2026 (GPT-6, Opus, Алиса): кто сломал JSON, проглотил инъекцию и влетел на 152-ФЗ +3

09:02

Загадочный «Блок № 20» +97

06:55

Я выкачал 1 000 лучших статей Хабра за год, чтобы понять, почему меня так мало плюсуют +69

06:42

Что стало с «убийцами 1С»? +53

12:13

Краткий обзор фейкового планшета: что нового в 2026-м году +52

07:00

ИТ‑шаманизм — когда айтишники старой волны замыкают на себя как можно больше процессов, чтобы их не уволили +44

13:01

Gravity Defied: стик‑человечек на мотоцикле +39

07:01

Фишки кастдева: личный опыт +31

12:14

Таск-трекер, Петрович и три пачки сигарет. История одной цифровизации +26

08:00

Можно ли собрать сервер из игровых комплектующих +25

07:32

Студенты против ИИ-агентов на фоне падения прибыли ИТ-рынка на 34%: единственный способ стать востребованным инженером +21

09:53

Три стадии развития коммуникации с клиентом в ИТ +18

07:05

Питание пульта ДУ от нестандартных источников: индукционное и не только +18

07:55

Тестируем работу WEB‑proxy для Telegram +16

06:10

Свой CAM для фрезеровки плат: Windows 7, станок без API и карта высот самой фрезой +16

22:13

Научил ChatGPT сохранять иностранные слова прямо в мой телефон +15

12:15

Air gap‑кластеры Kubernetes: сеть закрыта, но не безопасна +15

14:42

Переход с Java 21 на Java 25: что действительно перестаёт работать +13

15:33

Хроники цифровых заводов: роботы умеют почти всё. Кроме того, что от них требуется +12

11:01

Если вы дочитаете эту статью, вы уже сопротивляетесь +12

09:49

10 000 вентилей NAND в реальном времени: как устроен симулятор в нашей игре на Rust +12

11:54

Электронный микроскоп — штука, которая позволяет увидеть атомы +127

05:46

Как меня сократили из крупной IT‑компании и через 3 месяца я стал зарабатывать больше, чем на прошлой работе +79

07:51

Что полезно знать про процедуру увольнения по соглашению сторон +75

06:25

«Инцидент в Сасово» как зеркало современного капитализма +72

05:36

Почему автобус никогда не приходит вовремя, или Теорема о том, что вам не повезло +64

10:32

PaperKey — современная замена пароля +51

08:00

Ваш смартфон разговаривает сам с собой. Введение в UART, I2C и SPI +49

07:57

Один профессор, один калькулятор и 475 миллионов долларов, которые Intel пришлось списать +49

13:01

Кто стоит за бэкдорами в криптокошельках Ledger? +42

07:01

Как работает акустическая камера, которая показывает окружающие звуки +42

07:03

И восстали люди из пепла ядрёного нейрослопа +39

09:01

Милорд, серверное железо пожрал ИИ. Арендуем Bare Metal +32

20:55

Нужно больше инстансов, Милорд +31

08:15

От толмачей до локальных нейросетей: как я собрал приложение для перевода книг +23

07:05

Zynq 7020 + AD9361. Часть 1. Вводная +21

13:50

Дребезг цифрового сигнала: почему инвертор ведет себя как усилитель +17

20:35

Как мы горим +14

19:10

Миллион ферритовых колец ради 128 КБ: разбираем память компьютера Spacelab 1980 года +14

13:00

Странные олдскульные технологии, которые так и не взлетели, часть 5 +13

13:30

Прежде чем работать с AIDL: разбираемся, как устроен IDL +12

ОБСУЖДАЕМОЕ

  • «Инцидент в Сасово» как зеркало современного капитализма +72

    • 754   105000

    Как мы горим +14

    • 212   23000

    PaperKey — современная замена пароля +51

    • 142   105000

    Как меня сократили из крупной IT‑компании и через 3 месяца я стал зарабатывать больше, чем на прошлой работе +79

    • 133   24000

    ИТ‑шаманизм — когда айтишники старой волны замыкают на себя как можно больше процессов, чтобы их не уволили +44

    • 115   47000

    Что стало с «убийцами 1С»? +53

    • 91   52000

    Инженерный штраф: как зарабатывать, оставаясь инженером +6

    • 79   16000

    Я выкачал 1 000 лучших статей Хабра за год, чтобы понять, почему меня так мало плюсуют +69

    • 65   8900

    Если вы дочитаете эту статью, вы уже сопротивляетесь +12

    • 48   7900

    Студенты против ИИ-агентов на фоне падения прибыли ИТ-рынка на 34%: единственный способ стать востребованным инженером +21

    • 41   11000

    Почему автобус никогда не приходит вовремя, или Теорема о том, что вам не повезло +64

    • 41   14000

    Что полезно знать про процедуру увольнения по соглашению сторон +75

    • 40   94000

    Электронный микроскоп — штука, которая позволяет увидеть атомы +131

    • 39   15000

    И восстали люди из пепла ядрёного нейрослопа +39

    • 37   10000

    Таск-трекер, Петрович и три пачки сигарет. История одной цифровизации +26

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