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

Подписка


ЛУЧШЕЕ

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

«Кривые руки» или новый уровень DPI? Разбор выходных блокировок XRay и VLESS +35

10:45

Одноразовые вейпы: как из-за общества потребления тысячи полезных компонентов отправляются в мусорку? +34

07:00

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

05:09

Мы опубликовали стабильный, быстрый, качественный и доступный синтез для 20 языков России +27

09:01

Никлаус Вирт и язык Pascal — легенды 80-х +17

05:05

Крипта несется вниз, а также признание Илона Маска, что он «жирный дебил» +15

12:00

SPQR — наше опенсорс-решение для горизонтального масштабирования Postgres +13

06:57

Статический анализ OpenIDE +13

11:01

Боты ищут путь: почему NPC за рулем машин в GTA такие неадекватные +11

07:15

Роевой интеллект: как 15 строк кода заменяют централизованное управление дронами +11

07:05

IT без выгорания: как остаться в профессии и не потерять вкус к жизни +11

10:05

Безопасность маленьких проектов +10

09:14

Локальные нейросети для бизнеса: как сэкономить время и деньги с Mac Mini и GPT-OSS-20B +10

10:18

Что наша жизнь? Игра! Основы геймификации и её применения в продукте +9

05:44

Интеллектуальные камеры для ВКС: разбор критериев выбора на примере реальных проектов +9

06:26

ИИ vs человеческая психика: битва ближайших десятилетий +8

05:00

Разработка электропривода. Часть 2. Электронная часть электропривода +8

08:13

Недельный геймдев: #253 — 23 ноября, 2025 +6

10:44

Как может быть разрешим парадокс слабого молодого Солнца +5

09:58

Собираем OpenWRT прошивку и ImageBuilder для нестандартного оборудования на основе dts +5

02:37

Автономный дом кочевника с дождевой водой, солнечными панелями. Жизнь без водопровода, газа и счетов +138

09:01

Сборка IBM-PC XT на базе ПЛИС +76

18:21

Математика равновесия: как уравнение Ляпунова держит весь мир в узде +53

13:01

История редкого ноутбука: свежий взгляд на винтажный Bliss 502C +36

07:33

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

19:51

Xcode — худшее профессиональное ПО, с которым я когда-либо работал +30

09:27

Poetry vs Pip: Почему пора перестать использовать requirements.txt +28

10:00

Зачем вам PMBoK, когда есть эта статья? +22

08:00

Портативные консоли осени 2025: от компактных Android-моделей до тяжеловесов на Strix Halo +22

12:05

Клуб, который изменил мир: Homebrew Computer Club +18

06:52

Cure :: Завтипы и формальная верификация для BEAM +18

14:30

Голосовой ввод для Windows через Vosk своими руками +15

16:16

ESPB — брат WASM для ESP32 +13

06:26

Ошибки, которые я совершал при оценке стоимости проектов на фрилансе +13

19:15

О дивный новый анимированный мир — ViewTransition в React +12

13:15

Плата контроллера движения OpenPNP +12

08:55

Код, который нас убивает +11

15:33

Open source-мероприятия в России: предстоящие конференции, встречи и семинары [подборка дополняется] +10

11:55

Открытая наука? +10

10:31

Softbank тайно избавился от акций Nvidia, а SEC расследует деятельность OpenAI. Лопнет ли пузырь ИИ? +10

13:01

Что происходит с удалёнными файлами: разбираем алгоритм TRIM и его нюансы +59

23:45

Вайб вместо звука: как я за вечер собрал вибровариометр на ESP32, а Gemini и ко сгенерировали всё, кроме пайки +53

09:01

Часы, минуты и секунды: как люди нарезали сутки с древности до наших дней? +43

13:10

Сексуальный подтекст андроида Эша или как Бильбо Бэггинс попал в фильм непонятной категории +34

08:00

Loongson 3D7000: новый китайский процессор с большим потенциалом. Что это за чип? +34

10:05

MIT доказал провал 95% проектов, OpenAI признали галлюцинации, или почему ИИ никогда не заменит людей +33

17:27

Мы добавили поддержку ещё 19 языков России и СНГ в проект silero-stress +24

10:05

LLM в науке. Используем LLM в анализе эксперимента +24

05:06

Лабораторная работа по тонкой настройке LLM для нестандартных задач классификации +20

13:08

Как я проходил собеседование на Senior Java +19

15:56

Три маразма Оптимизации +15

08:41

ООП в Python на пальцах: Пишем свою текстовую RPG с нуля +13

18:17

Новый пузырь или фундаментальный рост? +12

07:13

AI на фотонных чипах все ближе: ученые провели тензорные вычисления с помощью света +10

16:32

Беды с intel_pstate на Lenovo Yoga 9 2-in-1 +9

14:34

Вайбкодинг реальности: Как я заставил AI переписать физику, просто пересылая сообщения между окнами +9

11:44

Создатель логотипа Rolling Stone Джим Паркинсон: как придумывались уникальные шрифты и дизайн для журналов (и не только) +7

22:42

Всё, что вы хотели знать о t-тесте, но боялись спросить +6

06:50

Кому принадлежит ваша CMS? +6

23:16

Моя история: как я нашёл первую работу в IT +4

ОБСУЖДАЕМОЕ

  • Автономный дом кочевника с дождевой водой, солнечными панелями. Жизнь без водопровода, газа и счетов +142

    • 167   83000

    MIT доказал провал 95% проектов, OpenAI признали галлюцинации, или почему ИИ никогда не заменит людей +33

    • 124   19000

    Математика равновесия: как уравнение Ляпунова держит весь мир в узде +57

    • 61   10000

    Открытая наука? +10

    • 56   1700

    Вайбкодинг реальности: Как я заставил AI переписать физику, просто пересылая сообщения между окнами +8

    • 46   3500

    Часы, минуты и секунды: как люди нарезали сутки с древности до наших дней? +43

    • 46   5700

    Как я проходил собеседование на Senior Java +19

    • 44   9800

    Мы опубликовали стабильный, быстрый, качественный и доступный синтез для 20 языков России +27

    • 41   1600

    Cure :: Завтипы и формальная верификация для BEAM +18

    • 40   783

    Как я установил Ollama на Ubuntu 24.04 и начал обучать локальную LLM под свои задачи -16

    • 37   9300

    Переоценка Успеха: Парадигма «Учись и работай» потерпела крах +1

    • 33   3500

    Poetry vs Pip: Почему пора перестать использовать requirements.txt +28

    • 31   8200

    Вайб вместо звука: как я за вечер собрал вибровариометр на ESP32, а Gemini и ко сгенерировали всё, кроме пайки +53

    • 25   7500

    Xcode — худшее профессиональное ПО, с которым я когда-либо работал +30

    • 24   6400

    Крипта несется вниз, а также признание Илона Маска, что он «жирный дебил» +15

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