Если вы вдруг собрались это читать, рекомендую сначала посмотреть вводное слайдщоу :)
С сегодняшнего дня, этот блог работает на статическом движке. То есть все страницы один раз генерируются на моем компьютере, статичные html'ки заливаются на хостинг, и просто отдаются посетителям. И вот почему:
- Основная причина - минимализм. Абсолютно незачем для небольшого скромного блога иметь базу данных, и при каждом запросе страницы запускать громадного, неповоротливого, жадно жрущего память монстра типа Wordpress.
- И Wordpress c 10ком-другим необходимых плагинов, начинает выдавать совершенно монстроурозный html.
- Вторая причина - экономия и так нехватающего времени.
- Это чертовски быстро работать с постами как с файлами на локальном компьютере. В плане поиска, замены, копирования редактирования, и.т.д. Ни каких лагов удаленной wordpress админки.
- Писать посты в формате .markdown - это во-первых классно, а во вторых в два раза быстрее чем через тормозной и кривой редактор того же wordpress (который постоянно пихает теги и вообще неожиданным образом корежит верстку). Я еще обязательно напишу сочинение "Почему я люблю Markdown".
- А еще, я давно хочу избавиться от Wordpressa. Каюсь, по молодости PHP казался мне не таким уж и плохим. Однако теперь, я стараюсь от него максимально дистанцироваться. Смесь четырех языков в одном файле мне теперь кажется дикостью.
- Ну и опять же, мне проще написать 10-20 строчек кода на Python (например для генерации оглавлений), чем искать какой-нибудь мутный плагин для Wordpess, который неизвестно как повлияют на загрузку сайта.
- Для меня, как программиста, удобно писать посты не выходя из Sublime Text 2. А так же уютно работать с блогом привычными понятиями, такими как build и deploy. Да и вообще оперировать блогом, как проектом.
- Я могу использовать привычные скрипты при сборке блога. Например без лишних телодвижений склеить все css в один файл sh командой:
cat _css/*.css | cssoptimizer -i -o > _site/style.css
, для оптимизации загрузки страницы. - Статический сайт гораздо лучше выстоит Хабра-и-прочие эффекты (а на этом скромном бложике такие пару раз были :)
- Весь контент блога находиться у меня на компьютере, и бекапиться стандартным образом, как все другие проекты. Не надо специально делать дамп MySql базы где базируется Wordpress.
- Ну и теоретически можно выкатить классный современный блог хоть на Amazon S3, хоть на Dropbox, хоть на narod.ru.
Вещи которые сложно сделать статическими отдаются внешним сервисам:
- Комменты - Disquss
- Поиск - Яндекс.Поиск для сайта (который чертовски удобно встраивается в сайт)
- Статистику посещений и скачанных файлов - Яндекс.Метрике
Поскольку я в последнее время максимально стараюсь отдалился от PHP, а использовать Octopress не могу потому что Руби я так и не освоил, то выбирал из движков для генерации сайта на Python. Выбор был не велик.
Hyde
Hyde - питоновский брат самого популярного статического блога на Руби Jekyll. Боевой крейсер Ямато. Там слишком много всего. Вы только список препроцессоров в разделе Configuring your website прочитайте! Плюс там посты не в чистом .markdown формате, их надо обвешивать Джанго тегами типа {% extends "_post.html" %}, {% block article %}
, и.т.д. Или писать еще 1 препроцессор. Нет, спасибо.
Pelican
Все есть - но слабо конфигурируемый. Если вам нужен рабочий, хорошо выглядящих блог - стоит обратить внимание.
Poole
Все в одном файле. Пример того как минимализм переходит в аскетизм, что не всегда хорошо.
Blogofile
Самый популярыный, и вменяемый. Можно легко писать свои контроллеры и фильтры, что-бы расширить функционал.
Правда дефолтная тема имеет несколько минусов:
- Недружественна к поисковикам (у страниц нет title, keywords, description)
- На выходе - неоптимальная структура файлов (каждая страница лежит в своей папке - а directory listing медленная операция). Проще говоря, синхронизация будет занимать много времени.
- Главная страница - это не блог.
- Нету поддержки тега more, чтобы запрятать длинный пост под кат.
- Ну и вообще не совсем соответствовал моим понятиям как должен выглядеть правильный блог.
- и.т.д. Как обычно пришлось все переделывать
Подробно процесс миграции я описывать не буду. Думаю что если вы решите переезжать на blogofile, то навыки программирования на Python у вас уже есть, и вы разберетесь. А чтобы сэкономить ваше время просто выкладываю все свои наработки на Github -
- Скрипты для импорта из Wordpress
- Скрипты для билда и деплоймента по ftp
- Модифицированный Controller для Blogofile
Вы можете поэксперепентировать, запустив у себя на localhost:8080 копию моего блога выполнив следующие комманды описанные в readme
Если хотите знать как у меня реализована та или иная фича - смотрите diff от дефолтной темы
В итоге получается 639 html файлов, которые генерируются за полсекунды. При написании поста добавляются 1-2 и изменяются 10-20 файлов, так что заливка их через lftp занимает от силы секунд 10. Итого - я получаю быстрый и удобный блог, куда приятно писать.