Обзор на Gatsby.js

SEO

Gatsby.js — это framework для создания сайтов. Он позволяет создавать очень быстрые сайты с высокими показателями Performance. Это генератор статичных страниц, который использует React для создания компонентов и Node.js для создания страниц. На GitHub проект получил 54 000 звезд начиная с 2016 года. В этом посте мы расскажем, почему он такой быстрый и какие особенности в нем есть.

article

Статическая генерация против динамической

Большинство сайтов используют динамический подход к отрисовке страниц. Это означает, что когда пользователь заходит на страницу, то происходит запрос на бекенд, в котором, в свою очередь, происходит запрос к базе данных, потом ответ из базы данных обрабатывается и отправляется пользователю в браузер.

Static Site Generation отрисовывает все запросы заранее, что позволяет исключить этот долгий путь в динамическом варианте и значительно ускорить загрузку. Это, к сожалению, порождает ситуацию, в которой любое изменение сайта требует его пересборки. Но при этом стоить отметить, что можно создавать динамические компоненты на сайте, которые будут запрашивать актуальную информацию на бекенде во время взаимодействия пользователя с сайтом.

article

Такой подход можно назвать винтажным. Так как с этого подхода все начиналось.

Немного занудства. Вообще, динамическую отрисовку стоит разделить на Client-side rendering и Server-side rendering. Вопрос в том, где будет создаваться HTML-документ, — в браузере или на сервере. В зависимости от задач проекта будут использоваться разные подходы, при этом их можно миксовать. Например, для сложных приложений Static Site Generation и Server-side rendering не подойдут, лучше использовать Client-side rendering. Но это тема другой статьи уже, вернемся к Gatsby.

article

Посмотрим, какие еще вещи позволяют добиваться такой производительности.

База на React

Это означает, что вся экосистема React может использоваться для создания сайта. А она на данный момент доминирует во всем мире. И любой React-разработчик разберется с Gatsby за один день. А если он знает Next, так ему хватит одного часа.

Производительность React кроется в виртуальном дереве DOM, которое изменяет при необходимости лишь те части веб-страницы, которые действительно изменились. Например, во время перехода между страницами страницы не будут целиком заново загружаться, а загрузится только часть, которая должна поменяться.

article

Предварительная выборка (pre-fetching)

Это техника, которая используется для повышения производительности сайта или приложения. Она заключается в предварительной загрузке контента или данных, которые, вероятно, будут запрошены в будущем. Это происходит в фоновом режиме после основной загрузки страницы. Gatsby видит, какие страницы может посетить пользователь на текущей странице, и загружает данные, которые могут потребоваться, если он будет переходить на них. Предварительная выборка может существенно улучшить пользовательский опыт и увеличить скорость загрузки сайта.

Подобный подход позволяет осуществлять очень быстрый переход между страницами. Это может занимать сотые миллисекунды и происходить мгновенно.

Gatsby использует WebP

Это формат изображения, разработанный компанией Google. Он был создан с целью улучшения качества изображений при меньшем размере файла, чем у традиционных форматов, таких как JPEG и PNG. Он экономичнее на 25-34%. На данный момент он поддерживается уже всеми браузерами.

Разделение кода (code splitting)

Это техника в разработке программного обеспечения, при которой основной код приложения разделяется на меньшие, отдельные части или блоки. Это позволяет загружать приложение только с необходимым кодом для конкретной страницы или функции, а не загружать вcю кодовую базу сразу. Это приводит к улучшению производительности, поскольку приложение загружает только необходимый код для действий текущего пользователя. Разделение кода также помогает лучше организовать и поддерживать код, поскольку каждый блок кода может быть разработан, протестирован и обновлен независимо.

Система управления контентом (CMS)

Gatsby может забирать данные из любых CMS. Есть официальные плагины от основных производителей, которые позволяют очень быстро установить связь.

Документация

У Gatsby прекрасная документация и большое англоязычное коммьюнити. Любой вопрос можно решить и найти ответ на GitHub.

article

Недостаток Gatsby

Нужно пересобирать сайт при каждом обновлении. Это означает, что обновления на сайте появятся с задержкой в 5-20 минут в зависимости от объема сайта. При больших объемах нужно будет заменить генерацию страниц с Static Site Generation на Server-side rendering или Deferred Static Generation, который будет помедленнее, но все равно быстрее, чем решения на PHP.

Итог

Gatsby.js представляет собой мощный инструмент для разработки высокопроизводительных веб-сайтов. Этот статический сайтогенератор, основанный на React и Node.js, обеспечивает эффективную предварительную генерацию страниц, что приводит к быстрой загрузке и оптимальной производительности. Интеграция с GraphQL, обширной системой плагинов, а также возможностью разделения кода делают Gatsby.js привлекательным выбором для разработчиков, стремящихся к созданию современных и быстрых сайтов.

Да, мы делаем сайты на Gatsby, и на Astro JS или Next JS.

Другие статьи

Исследование. Влияние скорости сайта на SEO