Один или два раза в месяц я получаю следующий вопрос: «Почему бы вам не использовать генератор статического сайта (Static Site Generator (SSG)) для своего блога?»
Я не буду врать, то, что я основатель и лидер проекта Drupal играет определяющую роль в том, почему я использую Drupal для своего сайта. Если бы я не использовал Drupal, это было бы похоже на то, как директор Coca-Cola пьёт Pepsi, пекарь покупает хлеб в супермаркете или мебельщик обставляет свой дом из IKEA. Люди бы не поняли.
Но конечно, если бы я хотел использовать статический сайт, я мог бы. Drupal часто используется в качестве хранилища содержания для Gatsby.js, Next.js и многих других фрэйм-ворков.
Главная причина, по которой я не пользуюсь SSG в том, что не не нравится их рабочий процесс публикации содержания. В Drupal, я могу внести правку, сохранить изменения и сразу увидеть результат. С SSG это сложнее. Мне нужно зафиксировать изменения в Git, перестроить сайт, отправить обновления в веб-сервер. Я просто предпочитаю пользоваться более удобным процессом в Drupal.
Коллаж скриншотов разных генераторов статических сайтов, на которых подчёркиваются такие возможности как: быстрая загрузка страницы, быстродействие, беспрецедентная скорость и так далее.
Сторонники статических сайтов сразу укажут на то, что статические сайты «гораздо быстрее». Лично я считаю это заблуждением. Мой сайт на Drupal — dri.es — быстрее большинства статических сайтов, в том числе домашних сайтов ведущих SSG.
Технология | Тестируемый URL | Скорость загрузки |
---|---|---|
Drupal | dri.es | 0,3 секунды |
Gatsby.js | gatsbyjs.com | 2,8 секунды |
Next.js | nextjs.org | 1,8 секунды |
Jekyll | jekyllrb.com | 0,8 секунды |
Elevently | 11ty.dev | 0,5 секунды |
Docusaurus | docusaurus.io | 1,8 секунды |
Svelte Kit | kit.svelte.dev | 1,1 секунды |
На практике, большинство сайтов отдают своё содержание из кэша. Как результат, мы в основном измеряем механизм кэширования, быстродействие последнего отрезка сети и рендеринг на стороне клиента. Из всего этого, рендеринг больше всего влияет на скорость.
Мой сайт самый быстрый, потому что его код HTML/CSS/JavaScript маленький и быстрый для рендеринга. Ещё я не использую внешние шрифты, отслеживание посетителей или объёмный JavaScript. Кроме того, Drupal ещё оптимизирует быстродействие путём отложенной загрузки изображений, сборки стилей и скриптов, а также других техник.
Другими словами, быстродействие сайта больше зависит от кода HTML, CSS, JavaScript, изображений, видео, шрифтов и так далее, чем от используемой базовой технологии. Также влияет на быстродействие и способ кэширвоания данных. Использование реверс-прокси, таких как Varnish, эффективнее кэширования через файловую систему. А использование CDN ещё больше улучшает скорость. CMS, которая использует CDN для кэширования, может обеспечить лучшее быстродействие в сравнении с SSG, который хранит медиаданные только в файловой системе.
В целом, я не против SSG. Я могу понять случаи их использования, и есть много ситуаций, когда они являются отличным выбором. Любые данные, которые могут быть статическими, должны быть статическими. Но я также считаю, что любые динамически сгенерированные данные, которые эффективно кэшированы, становятся статическими. Страница, динамически созданная CMS и эффективно закэшированная, это статический ресурс. Генерировать статические данные могут и CMS, и SSG.
Короче говоря, я просто предпочитаю процесс работы в CMS и поддерживаю скорость работы своего сайта, сохраняя сгенерированный код HTML лёгким и хорошо кэшированным. И что мне сильно помогает, так это наличие обработчика запросов на стороне сервера. Я знаю, что это может звучать странно, но поверьте мне: обработчик запросов на стороне сервера приносит удовольствие. Годами это приносило мне удовольствие и позволяло делать на сайте интересные вещи. И я не остановлюсь в ближайшее время!