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

Подписка


ЛУЧШЕЕ

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

Вперёд к мечте! От JCUKEN к QWERTY на Специалисте +8

08:05

«Вика-Д3». Суровые челябинские домофоны настолько суровы… +7

08:52

Как открытые веса раскрыли секреты обучения GPT-5 +6

08:03

Морфологические преобразования и гамма коррекция на FPGA. Публикую проект Arduino стереокамеры на github +6

07:15

75 лет патенту на транзистор: как один документ запустил цифровую эпоху +5

07:05

Как интернет‑провайдеру обеспечить непрерывность бизнеса и кибербезопасность +5

05:57

“Аркейн”, которого мы не увидели: Теория о том, почему второй сезон — это «призрак» первого +5

09:37

Переход от координирующей роли к лидерской управленческой роли +4

09:30

Как мы запустили GPU NVIDIA H200 в Selectel, или почему в золотую лихорадку непросто продавать лопаты +3

09:01

Цифровой звук на PC Speaker +3

08:43

DBT Proplum: Расширяем возможности DBT для работы с Greenplum и Clickhouse +3

07:02

Цепочка гаджетов в Java и как небезопасная десериализация приводит к RCE? +3

04:51

Как защитить Kubernetes на уровне ядра Linux +3

04:22

Хостинг для кода. Сравнение VPS, App Engine и Serverless решений +3

08:35

Влияние защитной паяльной маски на параметры высокочастотных печатных плат +2

07:23

Все еще борешься с галлюцинациями? Ты просто не умеешь их использовать +2

08:08

Продвинутый анализ на PySpark: учимся работать с рекуррентными соотношениями +1

07:29

Из программистов в ИТ-панк-рок +1

07:10

У рекрутёра есть один шанс произвести первое впечатление. Часть вторая +1

06:55

Упаковка проекта с большой анимацией в один HTML файл или как кодировка Windows-1251 избавила от лишних 52МБ +62

10:40

Векторный анализатор NanoVNA для радиолюбителей +51

09:00

Забудь про облачные подписки! Полный переход с Google Photos на Immich. Мой личный опыт +48

14:17

Как я собирал себе NAS сервер или обретаем независимость своих данных от корпораций +47

18:12

Как я создала аккаунт с именем «NULL» и мне стали приходить уведомления о покупке доменов другими пользователями +44

13:01

Как извлечь сотни тысяч вольт из струи воздуха или пара? +44

09:01

Электрогитара со встроенными эффектами перегруза +32

08:30

Обновления продуктов Selectel в сентябре +31

18:34

Мы решили задачу омографов и ударений в русском языке +30

07:05

Солнце «в кармане»: солнечный концентратор +27

15:17

В помощь реверс-инженерам SNES +26

11:28

Изучаем базовые протоколы сети с помощью open source-эмулятора Miminet +26

21:51

Хороший, плохой, цветной и быстрый +25

06:33

OpenBSD: интервью с Вячеславом Воронцовым +24

14:09

Искал медь, а нашёл оптику — экономика апгрейда до 1,6 Тбит/с +22

08:40

Игровая реклама, которую мы потеряли +20

14:05

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

12:19

Вышел Python 3.14. Насколько он быстр? +18

08:38

Что значит быть продуктовым разработчиком +18

08:05

LORAmaster Lite: хорошо упакованная Лора (мечта электронщика Егора) +18

12:19

Началось: Роскомнадзор приступил к проверкам и начал рассылать предпринимателям первые требования по новому закону +89

18:35

Как не сойти с ума? IT рынок переполнен +61

13:01

Китайские CPU и GPU почти догнали TSMC +52

07:00

Пять нестандартных мини-ПК: от складной клавиатуры с экраном до ПК-стика с N150 +49

09:01

Дорожная карта Java backend-разработчика: c Junior до Middle +48

07:47

Возвращение легенды. Второе дыхание списанного IBM ThinkPad T40 +48

08:14

Chonkie: революция в RAG-чанкинге — скорость, лёгкость, удобство +40

07:05

Как ИИ помогает лже-риелторам врать эффективнее +38

07:26

Как я искал работу бэкенд разработчика с одним годом опыта. Мысли, эмоции, статистика +36

07:00

Из котельной — в Ад: Doom на ПЛК +36

09:08

130+ датасетов для машинного обучения: гид, который сэкономит часы поиска нужных данных +30

13:07

Топ-10 лучших бесплатных нейросетей, которые сильно упростят вашу жизнь +29

08:05

ЕС1851: стресс-тест процессора Intel 80386SX-16 в XXI веке +29

18:31

Один рабочий день технического писателя: правки, конфликты, редактура, релиз +28

10:42

Исследование кремниевых кристаллов процессора Intel 386 +24

12:41

Гайд по применению Object Lock на примере S3-объектного хранилища VK Cloud +23

12:41

Гайд по применению Object Lock на примере S3-объектного хранилища VK Cloud +23

10:14

Несколько слов о корпускулярно-волновом дуализме +23

13:30

Возвращение Ubuntu Touch: как обновление дало вторую жизнь мобильной ОС +22

08:00

Как сокращение полных путей файлов в логах влияет на производительность и размер Браузера +21

ОБСУЖДАЕМОЕ

  • Как не сойти с ума? IT рынок переполнен +61

    • 314   52000

    Началось: Роскомнадзор приступил к проверкам и начал рассылать предпринимателям первые требования по новому закону +89

    • 271   118000

    Забудь про облачные подписки! Полный переход с Google Photos на Immich. Мой личный опыт +48

    • 151   30000

    Изучение английского языка глазами мигранта +17

    • 70   3100

    Пятница — новый выходной? Как страны тестируют четырёхдневку +4

    • 66   3300

    Микросервисы — это зло -7

    • 53   3700

    Как я собирал себе NAS сервер или обретаем независимость своих данных от корпораций +47

    • 53   15000

    Windows последних поколений: шаг вперёд или провал десятилетия? +5

    • 51   5000

    Как я создала аккаунт с именем «NULL» и мне стали приходить уведомления о покупке доменов другими пользователями +44

    • 46   55000

    Анти-Эйнштейн в СССР +14

    • 45   3100

    Налоговая обновила требования к чекам — за что теперь будут штрафовать +4

    • 43   27000

    Вся фантастика и фентези — про людей +17

    • 43   10000

    ДРАКОН + ИИ: быстрый путь от идеи до работающего кода +2

    • 42   2300

    Я «уволил» LLM с должности «мозга» проекта. И его производительность взлетела +10

    • 41   7800

    Китайские CPU и GPU почти догнали TSMC +52

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