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

Почему в ретро-игры рубятся спустя сорок лет, а современные забываются через два-три года? +14

09:01

Часть 12. Приключения латинского алфавита в разных языках: почему польская и чешская латиницы такие разные? +9

08:01

Большинство корпоративных ИТ-систем впервые размещается за пределами собственных дата-центров +7

09:27

Прощай, Кинопоиск +6

07:00

Как мы перераспределили альфу в A/B-тестах и сократили размер выборки +5

11:54

Edge‑навигация своими руками: ESP32 + Android + велосипед/мотоцикл +4

10:16

Чтобы понять Kubernetes, я написал свой Kubernetes +3

08:06

Что и как меняется в ИТ-инфраструктуре при внедрении ИИ? +3

08:24

Дешево, но не точно: разбираем контроллер доверия к памяти LLM-агентов +2

07:44

МУзей Мусора МуМуКа +2

06:58

Как мы перестраивали e‑commerce‑платформу в production: от legacy‑системы к Next.js и Symfony +2

12:18

В радости и в горе, или как нейросети понимают эмоции пользователя +1

09:37

Переговоры — это не только про работу: как я учу ИИ не поддаваться +1

09:20

Скорость визуального восприятия: правда и мифы +1

08:48

MTPLX против oMLX: одна модель, два сервера, разница в 3–6 раз +1

07:30

Запустили полнотекстовый и гибридный поиск в YDB: рассказываем, что под капотом +68

07:30

Запустили полнотекстовый и гибридный поиск в YDB: рассказываем, что под капотом +68

08:05

Первые отечественные электронные лифты. УЛЖМ МЯУ +53

11:50

Часы Unix тикали от розетки: откуда взялся 1970 год и что сломается в 2038-м +41

07:05

Технология будущего в 2003 году. Взлёт и падение IrDA +39

08:00

Разбор Jev — модели, которая не умеет писать +30

06:28

Скоростная разработка электроники 2 +30

09:01

Зелёный пайплайн ничего не доказывает. Семь способов, которыми quality gate пропускает брак в прод +29

16:00

Как я создал СуперЗавуч — программу для генерации расписаний занятий +28

13:01

Сложно о простом. Ничего не понимаю в ИБ. Часть 1. Зачем защищать корпоративную сеть, если она и так работает? +28

11:45

Найм уровня undefined +23

10:50

Что реально дает Wi-Fi 7 дома +23

09:49

Я хотел одного гуля, а ИИ‑агенты собрали конвейер 3D‑персонажей для Unreal Engine 5 +21

10:01

Я обучил нейросеть играть в «Точки» — теперь она меня обыгрывает +20

13:08

Когда одного CNI мало — deepdive в CNI Chaining +19

13:00

На чем гики из третьих стран учились программировать? +18

12:36

Безопасники против хакеров: симметрия инструментов и асимметрия скоростей +16

12:35

Blackview Gamibook 16 — самый честный обзор на ноутбук за 160к с RTX5060 +16

11:08

Прорыв GPT-6 Astra, Claude взрослеет до версии 5.5, скандал вокруг задачи Навье-Стокса: главные события в ИИ за сентябрь +15

07:03

Книга для разработчиков, контент-дизайнеров, продакт-менеджеров +15

09:58

Купил мини‑ПК с приставкой «AI» ради локальной LLM. Что может NPU на самом деле +88

07:00

Модели — это не лёгкое дешёвое ИТ для всех, а новый уровень кровавого энтерпрайза +72

09:01

Составное устройство USB на AT32. Часть 1: Подготовка +55

11:37

ч2: Разбор. Как мы закрывали утечку через tun0 в AmneziaVPN +53

14:02

Как я собирал свой первый ПК на Pentium 166 в 1998 году и почему это было лучше, чем собирать Ryzen сейчас +51

15:05

ИИ агенты. Что это простыми словами и в чем отличие от обычного ИИ +42

13:48

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

07:47

C++: пишем свою std::function +40

08:01

Китайские GPU — две новинки, которые стоит рассмотреть в паре +37

13:01

Большой научный обзор Wi‑Fi‑сенсинга: данные, модели, проблемы и перспективы решения +36

07:05

Про магнитопроводы/сердечники катушек (в том числе, полностью самодельные) +32

12:32

Если UI плагинный, почему BFF монолитный? +29

07:01

За пределами EXPLAIN: как увидеть выполнение запроса вживую в распределённой СУБД +29

07:01

За пределами EXPLAIN: как увидеть выполнение запроса вживую в распределённой СУБД +29

12:41

Русский текст в Claude Opus 5 стоит в 3,9 раза дороже, чем в GPT-5.5, при одинаковой цене за токен +28

11:37

ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue +27

14:52

Вскрываем 5G на iPhone. Что не так с Российским 5G? +26

16:06

Как работает шифровальная машина Lorenz SZ 42 (для телетайпа) +21

13:30

Про айфоны и земледельцев мезолита +21

16:21

Видеоплееры живут в 2012 году, а мы — нет +19

ОБСУЖДАЕМОЕ

  • Модели — это не лёгкое дешёвое ИТ для всех, а новый уровень кровавого энтерпрайза +72

    • 124   90000

    Купил мини‑ПК с приставкой «AI» ради локальной LLM. Что может NPU на самом деле +88

    • 120   92000

    Как я собирал свой первый ПК на Pentium 166 в 1998 году и почему это было лучше, чем собирать Ryzen сейчас +51

    • 92   13000

    Видеоплееры живут в 2012 году, а мы — нет +19

    • 43   11000

    Я хотел одного гуля, а ИИ‑агенты собрали конвейер 3D‑персонажей для Unreal Engine 5 +21

    • 34   11000

    Русский текст в Claude Opus 5 стоит в 3,9 раза дороже, чем в GPT-5.5, при одинаковой цене за токен +28

    • 30   18000

    Скоростная разработка электроники 2 +30

    • 24   10000

    Как я создал СуперЗавуч — программу для генерации расписаний занятий +28

    • 20   31000

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

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