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

Программирование как разработка теорий: почему senior-разработчики стали ценны как никогда? +33

08:12

Плотнее, быстрее, дешевле: керамические накопители Cerabyte бросают вызов LTO +18

06:15

Внедрение зависимостей в PHP: от основ до фреймворков +13

06:48

EngEasy.ru — моё приложение английского. Идея, процесс, технологии +10

09:16

Тебе не поступить на программиста. Всё кончено +7

04:15

Собираем комплекс для качественного офлайн-перевода текстов, работающий на самом обычном игровом компьютере +6

11:15

Мы — не семья +3

10:40

Как мы подняли современный портал документации из россыпи .md файлов: пошаговое руководство по MkDocs + Material +3

11:13

Docker + Neovim: поднимаем конфиг на любом сервере и не засоряем систему +2

11:06

Реактивные системы: возможно ли отслеживать зависимости в асинхронном коде? +2

08:00

От дефицита к ажиотажу: почему DDR4 снова в центре внимания… по тройной цене +2

00:36

Магия чисел: как проектировать системы, зная их будущую нагрузку и стоимость +2

11:23

Человек, который изобрёл XX век: некоторые патенты Николы Теслы +1

10:41

Прощай, reCAPTCHA! Как я защитил формы входа с помощью бесплатной и невидимой CAPTCHA от Cloudflare +1

10:19

Мастерство копки. Или как создаются технологические рвы +1

08:30

Создание wildcart сертификата от Let`s Encrypt +1

07:56

Системное мышление: когда разработчик становится архитектором +1

07:52

Почему ваш ИИ превращается в ваше эхо: Гипотеза архитектурного слияния и как с этим бороться +1

05:47

Казахстан удержал ИПН 10% хотя человек работал из РФ — возвращаем ИПН шаг за шагом и начинаем платить НДФЛ правильно +1

09:01

Первые анекдоты о программистах: как выглядел юмор айтишников в 1996-1998 годах? +95

12:55

Лучшие игры легендарной машины: 45 лет назад на свет появилась линейка компьютеров ZX +43

09:56

Датчик утечки воды и не только, просто и почти даром +42

14:05

Пишем 3D-игру для ретро-устройств весом в 600Кб… +35

09:44

Как я почти продал ник за $9500 в Telegram +28

08:04

Deepin 25: китайский дистрибутив Linux с ИИ и обновленным DDE +22

13:01

GPS в городских джунглях: почему навигатор «прыгает» между небоскрёбами +19

10:16

Как сделать любую поверхность сенсорной +16

00:00

Оптимизация индексов базы данных: проблемы, решения, практические рекомендации +16

07:34

Продаешь крипту через P2P? Налоговая может потребовать 6% со всего оборота +14

08:05

О мягких и жёстких ссылках в Linux +11

08:02

Лучшие нейросети для создания игр +11

12:00

История создания процессора ARM: от амбициозного проекта до сердца цифровой революции +10

08:00

Алгоритм релакса: как пазлы помогают сконцентрироваться на сложных задачах и не выгореть +9

07:00

Покажи свой стартап/пет-проект (июль) +9

09:16

SOLID, DRY, KISS, YAGNI и др. принципы разработки, пугающие новичка в IT +8

13:50

PHP и Laravel дайджест новостей за июнь 2025 года +7

10:35

Часть 2: Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL +7

09:56

Скриншот-тестирование фронтенда: руководство по применению в 2025 году +6

06:38

Система позиционирования и фиксации дрона на посадочном столе +5

13:01

Как я обнаружил древнюю пасхалку в Power Mac G3 +53

12:00

Как уплотнялись серверы линейки ChipCore +32

14:05

Артефакты с балкона: о чём говорят забытые вещи +27

13:05

Как выжить в мире сложных интерфейсов в 2025-м: 7 работающих рецептов от React и CSS до дизайн-систем +27

20:40

Трехканальный вольтамперметр на базе ESP32-S3 с записью данных в лог и передачей данных по WI-FI (YCHEV003) +26

12:00

Llama 3.1 и «Гарри Поттер»: сколько текста действительно запоминает ИИ? +20

14:03

Как я использую в разработке опыт Леонардо да Винчи +19

11:00

Domain-Driven Design: чистый подход к проектированию бизнес-логики +18

11:49

Прощайте, Excel-пароли; привет, прозрачный аудит! Внедряем в инфраструктуру PAM-инструмент +17

16:46

Еще раз об SVG-виджетах в tcl/tk +11

20:23

29% взрослых не умеют надёжно уничтожать данные на ПК, ноутбуках и смартфонах +10

13:16

Я построил Vision Transformer с нуля — и научил его обращать внимание +10

12:50

Зачем прыгать в бассейн… преджунов? +9

12:22

Обзор САПР SimPCB Lite для расчета линий передачи и переходных отверстий на печатной плате +8

11:17

ChatGPT не делает нас глупее +8

13:03

Диаграмма потоков данных (DFD) для чайников: что это такое, как сделать и какой бывает +7

15:55

Figma подает на IPO: что стоит за «обычным» графическим редактором? +6

14:15

Эффективная коммуникация в ИТ: как тестировщики могут стать связующим звеном между отделами +6

19:54

Когда 42 — это цифра: шумеро-вавилонская система счисления с глиняных табличек +5

16:04

Как провалить собеседование по System Design: ошибки, которые допускают даже опытные разработчики +5

ОБСУЖДАЕМОЕ

  • Первые анекдоты о программистах: как выглядел юмор айтишников в 1996-1998 годах? +95

    • 100   31000

    Датчик утечки воды и не только, просто и почти даром +42

    • 76   15000

    От PHP к Zig: как я избавился от костылей в биллинг-системе +1

    • 56   3400

    Тебя что, в гугле забанили? Да… -15

    • 55   5800

    Лучшие игры легендарной машины: 45 лет назад на свет появилась линейка компьютеров ZX +43

    • 42   7600

    Domain-Driven Design: чистый подход к проектированию бизнес-логики +18

    • 42   6100

    Тебе не поступить на программиста. Всё кончено +8

    • 35   9200

    29% взрослых не умеют надёжно уничтожать данные на ПК, ноутбуках и смартфонах +10

    • 34   9200

    Продаешь крипту через P2P? Налоговая может потребовать 6% со всего оборота +14

    • 29   4800

    Как я почти продал ник за $9500 в Telegram +28

    • 27   5300

    Как выжить в мире сложных интерфейсов в 2025-м: 7 работающих рецептов от React и CSS до дизайн-систем +27

    • 27   4000

    ChatGPT не делает нас глупее +8

    • 27   4500

    Метафизика мнимой единицы -6

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