В последнее время стала популярна тема статических сайтов. И действительно: если сайт - это лендинг или сайт-визитка, где контент не обновляется вообще или обновляется раз в месяц, то зачем хранить на хостинге целую систему 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
Проблемы, которые мне пока не удалось решить:
- Заставить работать контактную форму (отправлять письма со статического сайта)
Комментарии
а сайт весь должен быть статическим или можно отдельные страницы?
Поясни, что ты имеешь в виду
В Буст есть опция использовать на определенных страницах. В Томе эта опция есть?
boost и tome работают принципиально иначе. boost по сути делает файловый кэш, который неудобно деплоить и хранить в ревизиях, он создан для ускорения чтобы отдавать статику nginx'ом, например. А tome - именно аналог современной тенденции генерации статики типа выдаваемой Gatsby статики.
Что касается форм, то их можно повставлять из всяких CRM-систем и будет ок.
Вообще, интересная штука. В сравнении с упомянутым gatsby есть ряд преимуществ - не надо делать фронт на реакте, не надо настраивать на бэке graphQL.
Но есть несколько НО, касаемо всех генераторов статики:
1. Сейчас даже самые дешёвые хостинги поддерживают php и mysql, то есть профита по цене хостинга статики или простого хостинга для сайта на php нет либо он крайне мизерный.
2. Если сайт можно перегенерировать в статику, значит он маленький и простой. А маленький и простой сайт в любом случае будет работать быстро, поэтому профит по быстродействию тоже сомнительный. Да, может быть 2мс вместо 20, но ведь и 20мс более, чем достаточно, чтобы выбить сотку на пэйджспиде.
3. Непонятно, где хранить друпал, который это будет генерировать? На компе заказчика - очень ненадёжно. На компе разработчика - очень накладно, т.к. через пару лет набегут десятки проектов, развёрнутых локально, и сожрут всё место. Опять же, что делать при замене старого компа на новый? Хранить базу и картинки в гите? Ну такое себе.
В виду перечисленных недостатков мне совсем непонятно, при каких условиях генератор статики может быть полезен, ведь по всем параметрам получается усложнение проекта.
1) Я рассматриваю статику не как экономию денег, а как экономию времени. Например, у меня есть блог, куда я пару раз в месяц добавляю материалы. При выходе очередного критикала для друпала мне не придется "прямо сейчас" ставить обновы на этот сайт. Я смогу сделать это в удобное для меня время и потом выгрузить новую статику (например, после очередного редкого добавления материала)
2) См пункт 1
3) Пока что я рассматриваю вариант статики для себя и своих проектов. Либо для сайта визиток клиентов которые у меня на поддержке. После покупки в прошлом году SSD на терабайт проблема места на 2-3 года меня не волнует)
Ну вот и получается пока что только "для себя". А вот захочешь ты сменить профессию, забьешь весь терабайт фотографиями рассады, и клиент останется не у дел, если захочет что-то поменять на сайте.
У меня для рассады есть NAS с гораздо большими объемами накопителей