Генерация статических сайтов с помощью Tome

В последнее время стала популярна тема статических сайтов. И действительно: если сайт - это лендинг или сайт-визитка, где контент не обновляется вообще или обновляется раз в месяц, то зачем хранить на хостинге целую систему CMS? Например, наш сайт https://why.drupal.ru сделан на друпале, но на хостинге находится именно статический набор HTML, CSS и изображений.

Один из самых простых способов сделать из друпального сайта статический - это воспользоваться модулем tome

1) Устанавливаем tome

composer req drupal/tome

2) Включаем модули tome, tome_base, tome_static, tome_sync

3) Добавляем строку $settings['tome_static_directory'] = '../html'; в settings.php или в settings.local.php

4) Также нужно добавить домен статического сайта в trusted_host_patterns, иначе при генерации сайта из админки будет ошибка Symfony\Component\HttpKernel\Exception\BadRequestHttpException: Untrusted Host

5) Чтобы экспортировать сайт в статику можно воспользоваться админкой, а можно драшем. Рассмотрим вариант экспорта драшем:

drush tome:static --uri=http://tome-static.docksal

, где http://tome-static.docksal должен быть URL сайта на хостинге

Теперь в каталоге ../html будут сгенерированные файлы статического сайта. Нужно скопировать их на хостинг (любым способом)

6) Экспорт из админки делается на странице /admin/config/tome/static/generate, вводим URL будущего сайта и жмем "Отправить". Теперь в каталоге ../html будут сгенерированные файлы статического сайта. Если перейти на вкладку "Скачать", то можно будет скачать файлы сгенерированного сайта в формате архива .tar.gz

Проблемы, которые мне пока не удалось решить:

  1. Заставить работать контактную форму (отправлять письма со статического сайта)

Автор

ivnish Drupal FullStack Developer, модератор drupal.ru

Комментарии

Аватар пользователя VasyOK VasyOK 24 мая в 9:52

В Буст есть опция использовать на определенных страницах. В Томе эта опция есть?

Аватар пользователя adubovskoy adubovskoy 24 мая в 9:59

boost и tome работают принципиально иначе. boost по сути делает файловый кэш, который неудобно деплоить и хранить в ревизиях, он создан для ускорения чтобы отдавать статику nginx'ом, например. А tome - именно аналог современной тенденции генерации статики типа выдаваемой Gatsby статики.

Аватар пользователя gun_dose gun_dose 24 мая в 10:33

Что касается форм, то их можно повставлять из всяких CRM-систем и будет ок.

Вообще, интересная штука. В сравнении с упомянутым gatsby есть ряд преимуществ - не надо делать фронт на реакте, не надо настраивать на бэке graphQL.

Но есть несколько НО, касаемо всех генераторов статики:
1. Сейчас даже самые дешёвые хостинги поддерживают php и mysql, то есть профита по цене хостинга статики или простого хостинга для сайта на php нет либо он крайне мизерный.
2. Если сайт можно перегенерировать в статику, значит он маленький и простой. А маленький и простой сайт в любом случае будет работать быстро, поэтому профит по быстродействию тоже сомнительный. Да, может быть 2мс вместо 20, но ведь и 20мс более, чем достаточно, чтобы выбить сотку на пэйджспиде.
3. Непонятно, где хранить друпал, который это будет генерировать? На компе заказчика - очень ненадёжно. На компе разработчика - очень накладно, т.к. через пару лет набегут десятки проектов, развёрнутых локально, и сожрут всё место. Опять же, что делать при замене старого компа на новый? Хранить базу и картинки в гите? Ну такое себе.

В виду перечисленных недостатков мне совсем непонятно, при каких условиях генератор статики может быть полезен, ведь по всем параметрам получается усложнение проекта.

Аватар пользователя ivnish ivnish 24 мая в 10:41

1) Я рассматриваю статику не как экономию денег, а как экономию времени. Например, у меня есть блог, куда я пару раз в месяц добавляю материалы. При выходе очередного критикала для друпала мне не придется "прямо сейчас" ставить обновы на этот сайт. Я смогу сделать это в удобное для меня время и потом выгрузить новую статику (например, после очередного редкого добавления материала)
2) См пункт 1
3) Пока что я рассматриваю вариант статики для себя и своих проектов. Либо для сайта визиток клиентов которые у меня на поддержке. После покупки в прошлом году SSD на терабайт проблема места на 2-3 года меня не волнует)

Аватар пользователя gun_dose gun_dose 24 мая в 11:20

Ну вот и получается пока что только "для себя". А вот захочешь ты сменить профессию, забьешь весь терабайт фотографиями рассады, и клиент останется не у дел, если захочет что-то поменять на сайте.