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

Инфракрасное сканирование микросхем +38

12:00

Как измеряли расстояние до Луны без компьютера и калькулятора? Открытия древних математиков +32

08:00

REST API в облаке: пошаговый гайд на Java + Spring +28

09:15

Джун за неделю или как инфоцыгане ломают найм в IT HR +26

08:35

Следствие вели, или Культура инцидент- и проблем-менеджмента в Ozon +23

13:01

Удивительный мир транспортных карт Японии +19

07:15

Когда VPN душат, в бой идёт SOCKS5: что нового в ProxiFyre 2.0 +19

04:53

Нейросетевая аниме-вайфу от Илона Маска, а также штрафы за гуглинг «экстремизма» +19

08:26

DIY-стенд для обучения автомобильной электронике, который сделает из новичка CAN-профи +14

08:00

UX и ограничения памяти: как принципы геймдева помогают проектировать интерфейсы +12

14:10

Я беру джойстик, лечу в поле и зарабатываю 3,6 млн чистой прибыли за сезон +11

09:55

Знакомьтесь: TCP-in-UDP +11

07:56

Что стоит за мошенническими схемами с доставкой посылок? +11

07:44

Статический анализ Pull Request'ов — ещё один шаг к регулярности +10

08:19

Быстрые гипотезы, AI инструменты в мобильной разработке и зачем CTO самому писать код +9

06:22

Биомимикрия: как природные структуры вдохновляют инженеров на создание новых технологий. Часть 2 +9

12:51

Комментарии vs. самодокументируемый код: что выбрать? +8

10:25

Недельный геймдев: #235 — 20 июля, 2025 +8

10:23

Картографический фотопроект «По местам съёмок фильма «Жмурки» +8

08:07

Искусство использовать интеллект: история и патенты Anthropic +8

07:48

Разбираем новый закон про VPN и «поиск материалов» с технической точки зрения +106

09:01

Хакаем корутины в C +42

13:30

Правый коронный (разряд) +41

13:01

Приспосабливаем китайский эффект эха для караоке в качестве электрогитарного +33

11:05

Топовый инвестор OpenAI пал жертвой синдрома Шершавого Кабана +33

08:00

Linux на распутье: взлет в США и Германии, спад в Индии +33

11:30

Бомбы для Эйнштейна +22

14:41

LLM-обзор 2024-2025 — живой путеводитель для тех, кто не хочет читать сухие отчёты +20

09:24

CPython — бессмертные Immortal объекты +20

14:17

Жизнь в Испании для россиян: плюсы и минусы +18

17:05

Страшные истории для рассказа в темноте. Или как народные страшилки превратились в компьютерные игры +17

08:00

Три пришельца из глубин космоса: межзвездные объекты в Солнечной системе +17

21:28

Медиа-сервер на основе Telegram-бота / Питонист пробует Go +16

15:33

Что дал переход на zsh мне, как разработчику? +16

12:58

Сравниваю автоматизацию n8n и скрипт на Python +16

18:43

Сжигать жир на животе. Препарат в одном шаге от одобрения FDA +15

12:40

От экосистемы KScience к опенсорс-хабу — рассказывает Александр Нозик, директор Центра научного программирования +10

11:41

Программирование ESP32 с ESP-IDF в среде platformio #3 +10

07:00

«Эра Flink 2.0»: что реально меняется в архитектуре real‑time вычислений +8

22:04

Делегирование, все всё знают, но не делают. Почему? +7

00:00

Разработка высоконагруженных API: проблемы, решения, практические рекомендации +120

14:06

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux +109

09:01

Из чего соткана ткань пространства-времени? +65

13:01

Айтишные анекдоты, 2001-2003 годы: появление шуток про сисадминов и ранняя XP +53

08:00

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL +37

11:15

Как я устал тестировать LLM-системы вручную и написал универсальный сканер уязвимостей +33

08:00

Когда ремонт превращается в приговор: диагноз для ноутбука Lenovo IdeaPad 310 +28

15:50

Люди которые «едят и не толстеют», в реальности мало едят или много двигаются +27

14:00

T-Pro 2.0 — открытая гибридно-ризонинговая русскоязычная LLM +24

12:00

Raspberry Pi, веб‑камера и Python — все, что нужно для создания ИИ‑тренера по фортепиано +24

11:00

Пять свежих одноплатников: маршрутизаторы, x86 и open-source FPGA +24

10:45

Вас невозможно научить иностранному языку +22

07:44

«Банкоматный» тур по Корее: краткий фотоочерк +19

08:36

Галлюцинации и многообразия. Зачем искусственному интеллекту многомерные миры +14

07:05

Ретро-гейминг проще, чем кажется. Какие консоли стоит купить для старых игр, чтобы проходить хиты с комфортом +13

13:51

Перевод текста с помощью нейросетей и сервисов +10

10:04

Категории типов. Часть 1. Hom-типы +10

10:01

Проблема автофокуса в первом поле формы +10

08:20

Земля родилась уже с водой, в доставке необходимости не было: исследование +8

06:01

Больше 1600 товарных знаков: как создавал логотипы классик болгарского графического дизайна Стефан Канчев +8

ОБСУЖДАЕМОЕ

  • Люди которые «едят и не толстеют», в реальности мало едят или много двигаются +27

    • 316   13000

    Разбираем новый закон про VPN и «поиск материалов» с технической точки зрения +106

    • 211   114000

    Топовый инвестор OpenAI пал жертвой синдрома Шершавого Кабана +33

    • 102   33000

    Linux на распутье: взлет в США и Германии, спад в Индии +33

    • 86   7200

    Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux +109

    • 84   53000

    Жизнь в Испании для россиян: плюсы и минусы +18

    • 74   8000

    Про риски разработки ПО +1

    • 71   2000

    Вас невозможно научить иностранному языку +22

    • 68   35000

    Из чего соткана ткань пространства-времени? +65

    • 62   30000

    UX-рудименты, часть 2: дизайн, который остался жить в 2012-м +3

    • 56   2300

    Сжигать жир на животе. Препарат в одном шаге от одобрения FDA +15

    • 55   4000

    Сознание и Бытие. Как человек и ИИ влияют друг на друга +3

    • 51   1800

    UGFM очередная «теория всего» от LLM или открытие? +1

    • 42   7200

    Как я устал тестировать LLM-системы вручную и написал универсальный сканер уязвимостей +33

    • 36   12000

    Что дал переход на zsh мне, как разработчику? +16

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