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

Подписка


ЛУЧШЕЕ

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

Ну и пригодились тебе твои синусы? +25

09:02

Альбер Робида: человек, нарисовавший стимпанк и предсказавший киберпанк в XIX веке. Часть 1 +15

07:10

От «Туманности Андромеды» к «Часу Быка»: как Иван Ефремов показывал роль науки и технологий и чего им не хватает +10

08:00

Как ИИ помогает Linux возвращать к жизни двадцатилетние видеокарты +9

10:23

Как отладить подключение бота к бирже за час, а не за трое суток +6

03:22

Пишем чат с ИИ девушкой на Python: LLM-роутинг, долгосрочная память и голос за выходные +4

10:46

Почём нынче токен для народа? +3

08:12

Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов +3

08:05

История разработки Arduboy WOW +2

08:38

Важные нюансы апгрейда ноутбука Thinkpad P16 Gen 2 для его превращения в почти ультимативную мобильную рабочую станцию +1

07:49

Расчёт электрических цепей. Первая часть +1

15:53

Невозможный KY26 +61

11:05

Девять лет, 514 коммитов и один посёлок: как я делал приложение с расписанием автобусов +45

09:01

Пасхалки для своих: Emacs в массовой культуре +38

08:00

Отказ от IPv4 и готовность человечества к IPv6‑инфраструктуре +38

08:05

Разбор медицинского анализатора: Bayer Clinitek Status+ +37

13:01

Треугольник SSH, или Зачем нужны 2 VPS +35

12:58

Велосипедный взрыв +35

06:01

OCC-RAG: компактные модели, которые отвечают только по источникам +35

06:00

От перфокарт до мейнфреймов: как в Германии обнаружили забытый «музей» вычислительной техники +32

07:05

Можно ли «посмотреть за угол»? Физика отвечает: да, конечно, никаких проблем +29

06:04

Советский вундеркинд, клепавший в школе роботов, часть 2 +27

17:39

Как SpaceX унизила Уолл-стрит +26

12:40

Мейнфрейм 1960-х в браузере: как работает IBM System/360 на микрокоде +26

08:57

Потратил полгода на обучение своей ии с нуля, вот что вышло +26

08:00

Исследование Selectel: каждая четвертая российская компания использует ИИ в облаке +23

00:18

Принцип Ландауэра — сколько весит один бит информации и почему стирание памяти греет Вселенную +19

09:44

Новый подход к микроэлектронике +16

07:03

«Это уже тысячу раз делали»: как мы добавили медиаленту в Яндекс Еду для iOS. А потом переделали +16

18:49

Как рассказать ребёнку, чем занимается папа, если папа работает с ИИ? +15

18:49

Как рассказать ребёнку, чем занимается папа, если папа работает с ИИ? +15

08:48

Я обнаружил крупномасштабное распространение вирусов в GitHub +147

10:25

Vibecode по дешевке — домашний сервер с Qwen Code за 25к, который не отключит Anthropic +133

13:40

Как я нашел новую панграмму (разнобуквицу) +94

08:00

Сказ о том, как нейросеть занялась reward hacking прямо у меня на кухне +58

13:02

Про то, как из 0°C получить мороз в десятки градусов и не только +51

09:01

Безымянный китайский телекастер +36

07:00

Когда нашим дорогим инженерам сильно надоело 5 раз проверять документацию за подрядчиками +36

07:05

Позвонить бесплатно: история взлома аналоговой телефонии. Часть 1 +30

12:45

SI/PI в разработке электронных устройств: анализ, который сэкономит вам время, деньги и нервы +29

15:13

ROP Level 1 в GD32F4: «А метлой дверь подпёр?» Или как нежно слить защищенную прошивку через программатор +27

11:14

Внешняя память для LLM: как RAG дает моделям доступ к новым знаниям +27

09:03

«РБПО для бедных»: собираем CI/CD-конвейер безопасной разработки +21

08:05

Продали дом за 7 000 000₽ и потеряли в майнинге. Видеокарты остались — из них вырос сервис генерации +21

16:32

Открыл бету AI-Мастера для D&D. Главная проблема оказалась не в кубиках, а в памяти +20

09:46

Как с нас пытались взыскать 5 000 000 рублей за детские трусы +20

07:57

КД по ГОСТ за один клик +20

10:50

Делаем науку на ровном месте +19

11:00

Солнцезащитный крем снижает синтез витамина D: как это работает +18

08:05

Как мы построили централизованную CMDB для управления Zabbix с RFC, аудитом и откатом изменений +18

09:53

Заглядываем внутрь ESE: от B+ деревьев до артефактов Windows +17

ОБСУЖДАЕМОЕ

  • Vibecode по дешевке — домашний сервер с Qwen Code за 25к, который не отключит Anthropic +133

    • 205   49000

    Продали дом за 7 000 000₽ и потеряли в майнинге. Видеокарты остались — из них вырос сервис генерации +21

    • 70   14000

    Отказ от IPv4 и готовность человечества к IPv6‑инфраструктуре +38

    • 50   13000

    Как я нашел новую панграмму (разнобуквицу) +94

    • 42   17000

    Как быстро реализовать современный работающий VPN в эпоху блокировок: теория и практика +11

    • 35   19000

    Я обнаружил крупномасштабное распространение вирусов в GitHub +147

    • 35   24000

    Лучшие связки CPU и GPU для игрового ПК в 2026 году: от 1080p до 4K +12

    • 34   14000

    Про то, как из 0°C получить мороз в десятки градусов и не только +51

    • 29   15000

    Треугольник SSH, или Зачем нужны 2 VPS +35

    • 27   14000

    Почему сейчас стажеры и джуны знают больше, но пишут код гораздо хуже, чем раньше +9

    • 26   6800

    Я собрал свой мессенджер по вечерам после работы +10

    • 25   6200

    Девять лет, 514 коммитов и один посёлок: как я делал приложение с расписанием автобусов +45

    • 23   9700

    Опережая гром: почему наша физика может быть ошибкой восприятия? +3

    • 22   4900

    Как рассказать ребёнку, чем занимается папа, если папа работает с ИИ? +15

    • 21   8800

    Как рассказать ребёнку, чем занимается папа, если папа работает с ИИ? +15

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