Возврат к истокам

Правильно ведь говорят: «Все новое — хорошо забытое старое». Вот я помню, как много лет назад в блокноте создавал свой первый index.html и заливал на тогда популярный хостинг GeoCities.com. Позже стало ясно, что из статических страничек можно слепить разве что домашнюю страничку, — для чего-то более серьезного нужны Perl и CGI. Теперь, когда есть миллион способов создавать динамические страницы, разработчики, наоборот, стали часто стремиться к «статике», особенно в высоконагруженных местах. Оно и понятно: нет никаких оверхедов на генерацию контента (страница уже готова), при этом все страницы разом легко кешируются (помещаются в память для моментальной отдачи клиенту). Но это история не только про высоконагруженные системы, но и про обычные сайты. Популярный сейчас тренд — движки для генерации статического контента. С их помощью можно создавать довольно сложные сайты, получая в конечном итоге набор статических файлов, которые можно легко захостить где угодно: хоть на Amazon S3, хоть даже на GitHub. Не нужно возиться с настройкой сервера, при этом сайт получается бронебойным (попробуй сломать ресурс из статических файлов).

 

Как это работает?

Общий принцип работы таких движков простой. Есть директория с шаблонами, в которых с использованием шаблонизатора задается верстка будущих страниц. И есть директория с контентом для сайта: как правило, это набор текстовых файлов, размеченных с помощью Markdown. Что делает генератор статического контента? Берет файлы из директории с контентом, применяет к ним шаблоны из директории с темплейтами и на выходе выдает набор статических HTML-ек, которые можно загрузить на сервер.

Возьмем для примера блог. Новый пост оформляется в виде отдельного Markdown-файла. После любого обновления нужно запустить движок, который генерирует статические HTML-файлы. Далее полученные исходники сайта загружаются на хостинг. Многие движки берут развертывание сайта на себя, поэтому все, что требуется для обновления, — это создать файл с содержанием нового поста для блога.

 

Какие бывают генераторы?

Один из самых известных генераторов статического контента — это блогерский движок Octopress, который я и попробовал в действии. Помимо него, также популярны jekyll, Nesta CMS. Всех их объединяет одно — они написаны на Ruby. Есть реализации на Node.JS (например, Punch, есть и на Python (Hyde). Все они используют один и тот же принцип, но отличаются в деталях: поддержке разных шаблонизаторов, используемой разметке исходных данных и так далее.

О статических генераторах контента многие узнали благодаря Octopress
О статических генераторах контента многие узнали благодаря Octopress
 

Куда развернуть?

Нет смысла показывать, как запустить пару команд генератора. У каждого из движков есть инструкции, как за пять минут сгенерировать статический сайт. Интересно другое — как использовать преимущества того, что мы отказываемся от динамики. Где разместить такой сайт? Чаще всего используется три варианта:

Одна из фишек GitHub’а — возможность создавать странички (Github Pages) для разработчиков, которые используют сервис для хранения репозиториев кода. Если выбрать этот бесплатный вариант, то все файлы сайта будут храниться прямо в Git-репозитории. Это очень удобно, поскольку читатели могут предложить свои Pull Request’ы и таким образом, к примеру, помогать исправлять ошибки. При этом сайт ты можешь привязать к своему домену.

S3 — это бронебойное хранилище для файлов от Amazon. Так как все файлы сайта весят ничтожно мало, а трафика, скорее всего, будет немного, на хостинг не потребуется много денег. Зато его 99,9%-я доступность практически гарантирована.

Heroku — еще одна облачная платформа, разработанная для быстрого развертывания веб-приложений (на Python, Ruby, Scala, Java и прочем). В случае со статическим сайтом использовать ее можно бесплатно.

Интересная PaaS-платформа для супербыстрого развертывания веб-приложений
Интересная PaaS-платформа для супербыстрого развертывания веб-приложений
 

Добавить динамики

Надо понимать, что любой статической странице сегодня легко можно добавить динамики через AJAX. Взять опять же блог, реализованный с помощью генератора статического контента. Без комментариев это, увы, не блог. Однако комментарии элементарно подключаются с помощью стороннего сервиса вроде Disqus, Livefyre, IntenseDebate. Благодаря таким инструментам подход к созданию сайтов с генерацией статических страниц приобретает еще больший смысл.

Аватар

Степа Ильин

Главный редактор «Хакера» с 2012 по начало 2014 года. Сейчас с командой единомышленников строит компанию Wallarm, разрабатывающую решения для защиты веб-приложений от хакерских атак и обнаружения в них уязвимостей.

Теги:

3 комментария

  1. Аватар

    01.10.2014 at 06:55

    а как же старый добрый MovableType? там много статики генерится при создании страниц и прочего. писаный на Perl.

  2. Аватар

    01.10.2014 at 16:44

    Вы, похоже, ошиблись — правильнее будет «Генератор статических сайтов».

  3. Аватар

    07.02.2015 at 04:16

    Круто, блин! Интересно попробовать.
    Я так понимаю что безопасность при этом действительно бронебойная. Сайт невзламываем, т.к. ломать нечего.

Оставить мнение

Check Also

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

Содержание статьиИз чего состоит IPsec?AH и ESPФреймворк для управляющих протоколов — ISAK…