React — это популярная библиотека JavaScript, используемая для создания пользовательских интерфейсов. Он отлично подходит для создания кода пользовательского интерфейса благодаря ясному и понятному стилю, синтаксису JSX и виртуальному DOM. Однако, когда ваше приложение React становится больше и сложнее, оно может начать работать медленнее и влиять на взаимодействие с пользователем.
Чтобы ваше приложение React работало без сбоев, важно оптимизировать его производительность. Это означает поиск способов сделать его более быстрым, отзывчивым и эффективным.
В этой статье мы рассмотрим некоторые методы оптимизации вашего приложения React. Мы также поговорим о том, как выявлять проблемы с производительностью, о распространенных ошибках, которых следует избегать, и о конкретных стратегиях повышения производительности вашего приложения.
Используйте инструменты производительности браузера
Самый эффективный способ измерить результаты реагирующего приложения — использовать маяк.
Lighthouse — это автоматизированный инструмент с открытым исходным кодом для повышения производительности, качества и корректности ваших веб-приложений.
При аудите страницы Lighthouse запускает множество тестов на странице, а затем создает отчет о том, насколько хорошо страница работала. Вы даете ему URL-адрес, и он предоставляет список рекомендаций о том, как улучшить производительность страницы, сделать страницы более доступными, придерживаться лучших практик и многое другое.
Отсюда вы можете использовать неудачные тесты как индикаторы того, что вы можете сделать, чтобы улучшить свое приложение.
Оптимизация изображений
Оптимизация изображений — важная часть повышения производительности любого приложения, включая приложения React. Большие и неоптимизированные изображения могут замедлить работу ваших веб-приложений и увеличить время их загрузки. Вот несколько методов, которые вы можете использовать для оптимизации ваших изображений:
Используйте формат изображений WebP. JPEG и PNG очень популярны в Интернете, и сегодня их используют многие разработчики. Существует новый формат изображений, известный как WebP.
WebP – это современный формат изображений, обеспечивающий превосходное сжатие изображений в Интернете без потерь и с потерями. Используя WebP, веб-мастера и веб-разработчики могут создавать более мелкие и насыщенные изображения, которые ускоряют работу в Интернете.
Изображения WebP без потерь на 26% меньше по размеру по сравнению с PNG. Изображения WebP с потерями на 25–34% меньше, чем сопоставимые изображения JPEG при эквивалентном показателе качества SSIM.
Настройте отложенную загрузку изображений. Отложенная загрузка – это стратегия, при которой ресурсы определяются как неблокирующие (некритические) и загружаются только при необходимости. Это способ сократить длину критического пути рендеринга, что приводит к сокращению времени загрузки страницы. Ленивая загрузка изображений означает, что изображения загружаются только тогда, когда они необходимы, например, когда они появляются на экране пользователя.
<img src="image.jpg" alt="..." loading="lazy" />
Атрибут loading в элементе img› (или атрибут loading в ‹iframe) может использоваться для указания браузеру отложить загрузку изображений/iframe, которые находятся за пределами экрана, до тех пор, пока пользователь прокручивает рядом с ними.
Разделить код React с помощью динамического импорта
Разделение кода React с помощью динамического импорта — это метод, используемый для повышения производительности вашего приложения путем загрузки компонентов или модулей только тогда, когда они необходимы. Это может помочь уменьшить начальный размер пакета и сократить время начальной загрузки, особенно для больших приложений React.
В React динамический импорт можно выполнить с помощью функции React.lazy. Функция React.lazy предоставляет простой способ отложенной загрузки компонентов.
Использование React.lazy
: чтобы использовать React.lazy
, вам нужно обернуть динамический импорт в функцию React.lazy
, и динамический импорт должен возвращать экспорт компонента React по умолчанию.
import React, { Suspense } from 'react'; // Dynamic import using React.lazy const DynamicComponent = React.lazy(() => import('./DynamicComponent')); function App() { return ( <div> <Suspense fallback={<div>Loading...</div>}> <DynamicComponent /> </Suspense> </div> ); } export default App;
В приведенном выше примере DynamicComponent будет лениво загружаться, когда это необходимо, а компонент Suspense позволяет вам предоставить индикатор загрузки (резервный вариант) во время ожидания компонента. нагрузка.
Оптимизируйте веб-производительность с помощью CDN
CDN — это «географически распределенная группа серверов, которые работают вместе для обеспечения быстрой доставки интернет-контента». CDN повышает производительность вашего веб-сайта, временно сохраняя содержимое вашего веб-сайта на серверах, которые находятся ближе к конечным пользователям. Это известно как кэширование.
Как работают CDN. Несмотря на то, что CDN действительно состоит из серверов, на которых размещается контент веб-сайта, CDN не может сама выступать в качестве веб-хостинга — вам по-прежнему нужен традиционный веб-хостинг для работы вашего Веб-сайт. CDN просто хранит содержимое вашего веб-сайта на серверах ближе к вашим конечным пользователям. Он ссылается на основной исходный контент веб-сайта, который хранится в вашем исходном магазине, на случай, если вы внесете какие-либо изменения или обновления.
Каковы преимущества CDN?
CDN предлагает компаниям несколько конкретных преимуществ, в том числе:
- Более быстрое время загрузки сайта.
- Снижение затрат на пропускную способность.
- Избыточность и масштабируемость в периоды высокой нагрузки.
- Улучшенная безопасность.
Стоимость CDN варьируется в зависимости от варианта использования. Как правило, вы можете начать работу с CDN относительно недорого или бесплатно. Некоторые провайдеры CDN, такие как Cloudflare, предлагают бесплатный уровень, если вы только начинаете свой бизнес или занимаетесь личными или хобби-проектами, а переход на уровень Pro Cloudflare стоит всего 20 долларов в месяц за дополнительные функции безопасности и ускоренную скорость загрузки мобильных устройств. Другие провайдеры, такие как Fastly, предлагают бесплатную пробную версию.
Рассмотрите возможность использования рендеринга на стороне сервера
Рендеринг на стороне сервера (SSR) в React.js — это процесс рендеринга веб-страницы на стороне сервера и отправки полностью обработанного HTML-кода в клиентский браузер. Это отличается от традиционного подхода к рендерингу на стороне клиента (CSR), где HTML создается с помощью JavaScript, работающего в браузере.
Рендеринг на стороне сервера (SSR) в React.js имеет несколько преимуществ и недостатков, которые обсуждаются ниже:
Преимущества рендеринга на стороне сервера в React.js:
- Более быстрое время первоначальной загрузки: при рендеринге на стороне сервера исходные файлы HTML, CSS и JavaScript предварительно загружаются на сервер и отправляются в браузер в виде полной HTML-страницы, что приводит к более быстрому времени начальной загрузки, особенно при медленных сетевых подключениях. . Это может улучшить пользовательский опыт и снизить показатель отказов.
- Улучшение SEO: рендеринг на стороне сервера полезен для поисковой оптимизации (SEO), поскольку поисковые системы могут легко сканировать содержимое страниц, что может привести к лучшему рейтингу в поисковых системах. SSR создает статические HTML-страницы, которые могут быть легко проиндексированы поисковыми системами, и предоставляет поисковым системам лучшие метаданные для сканирования.
- Лучшая доступность: рендеринг на стороне сервера обеспечивает лучшую доступность, поскольку гарантирует доступность контента для пользователей, у которых может быть отключен JavaScript или которые используют программу чтения с экрана.
- Улучшенная производительность. Рендеринг на стороне сервера может повысить производительность вашего приложения, так как сокращает время, затрачиваемое на загрузку, анализ и выполнение файлов JavaScript в браузере. Это может привести к более быстрой загрузке страниц и лучшему взаимодействию с пользователем.
Существует несколько популярных фреймворков и библиотек React, поддерживающих рендеринг на стороне сервера (SSR) или предоставляющих встроенные возможности SSR. Вот некоторые из наиболее известных:
Next.js. Next.js — очень популярная и многофункциональная платформа для создания приложений React с SSR. Он предоставляет простой в использовании SSR из коробки, а также другие функции, такие как автоматическое разделение кода, маршрутизация на стороне клиента, маршруты API и многое другое. Next.js абстрагирует большую часть конфигурации SSR и позволяет разработчикам сосредоточиться на построении логики приложения.
Gatsby. Gatsby прежде всего известен как генератор статических сайтов, но он также поддерживает SSR. Он использует гибридный подход, при котором некоторые страницы могут быть предварительно отображены в процессе сборки, а другие могут быть динамически отображены на сервере по запросу. Gatsby особенно хорошо подходит для веб-сайтов и блогов, ориентированных на контент.
Заключение
В этом сообщении блога мы рассмотрели различные стратегии повышения производительности веб-сайтов на основе React. Применяя эти методы оптимизации, мы можем значительно улучшить взаимодействие с пользователем, сократить время загрузки и повысить общую эффективность наших приложений.