(Рисунок www.wpbeginner.com)
Друзья, мы перевели блог с вордпресса на новую статическу платформу, которую разработали сами.
Почему нас не устраивал вордпресс
- Вордпресс медленный. Особенно для наших постов с кучей картинок. У меня половина плагинов была направлена на кеширование, минификацию и прочее ускорение, но слабо помогало.
- Вордпресс уязвимый. Нас дважды пытались взломать. Мы случайно попали в список взлома каких-то хакеров, и они нас ломали. К счастью, оба раза мы в момент взлома были дома и смогли оперативно отреагировать. Но все равно пришлось восстанавливать последние правки. Да, вторая половина плагинов у меня на тему защиты :\
- В вордпрессе сложно приделать что-то свое. Нужно копаться в миллионе плагинов, которые в итоге все равно работают не так, как мне нужно. Все это написано на языке PHP, в котором нам сложно что-то толковое делать. Это бессмысленное копание нереально бесило.
- В вордпрессе сложно править сразу много постов, и невозможно делать это в офлайне. С нашим регулярным отсутствием интернета это было неудобно.
Что такое статическая генерация
Блоги типа нашего являются статическими. Мы пишем пост, и он не меняется в зависимости от условий пользователя. Поэтому достаточно один раз создать html страницу под этот пост и всем ее показывать. Вордпресс же перегенерирует все заново каждый раз, и из-за этого тормозит.
У нас тексты статей пишутся на Markdown, который в частности применяет и активно пропогандирует GitHub. Движок написан на Node.js + Jade, верстка на основе Twitter Bootstrap.
Для переноса всего нашего контента и прочего с вордпресса был написан импортер. Счетчики поисковых систем, сео-теги и т.п. были легко внедрены на новый сайт.
Итак, что же поменялось
Из видимого, немного переделан дизайн. Некоторые функции убрали
Из внутреннего:
- Легко вносить любые правки: виджеты, посты, дизайн. Можно легко менять сразу много постов с помощью скриптов.
- Все это можно делать оффлайн и тестировать оффлайн.
- Посты теперь пишутся на markdown, это проще и удобнее, чем html. Я знаю, что в вордпрессе тоже можно было включить маркдаун, но это была бы новая порция копания.
- Включена автогенерация некоторых штук, стало меньше ручной работы.
- Сайт будет грузиться быстрее. Особенно у постоянных читателей. Сейчас у нас продвинутое кеширование.
- Безопасность значительно повысилась, логин идет через GitHub и Bitbucket.
- Все изменения контроллируются системой контроля версий Git, в случае необходимости можно легко откатиться на предыдущую версию, удобно координировать работу нескольких авторов.
- Возможность включить бесплатный хостинг через Bitbucket (это в процессе реализации) или GitHub.
Неужели нет никаких минусов?
Минус в том, что это все нужно разворачивать на своем компьютере. Быстро залезть поправить с чужого компьютера не получится. Но нам такое и не актуально.
Лично для меня минус в том, что мой дешевый маленький медленный нетбучик тормозит, и перегенерация сайта в тестовой версии занимает секунд 20. У Сереги это занимает секунды, и конечно же ничего не тормозит. Но рано или поздно мы все оптимизируем :)
Почему мы не использовали готовый статический генератор
Это пожалуй тема для отдельного поста. Если кратко, на GitHub существует много готовых статических генераторов с открытым кодом, большинство, кстати, написаны на Node JS тоже, но есть на всех скриптовых языках (типо Perl и PHP), на Go и даже на Java. Но они как правило ориентированы на создание очень топорных блогов, функционала недостаточно для такого сайта, как наш. К тому же у большинства нет толковой документации. Мы начали с попытки расширить другой движок, но быстро поняли, что легче написать свой.
Возможность использования нашей платформы другими пользователями
Нашу платформу можно использовать, но в ней нет никакой админ панели, пока что все действия происходят через консоль и текстовый редактор. От установки до написания постов. И пока что у нас много хардкода заточенного на наш сайт и мало возможностей по расширению без изменения исходного кода на Node JS. Возможно, мы когда-то сделаем из этого полноценную CMS, но не обещаем. Как-только мы сделаем нашу платформу более-менее пригодной для использования, мы напишем отдельный пост и дадим ссылку на инструкцию по установке и применению :)
Просьба к читателям
Если вы заметили, что на сайте что-то не работает, или работает не так, то пожалуйста, сообщайте нам в комментариях к постам, мы будем это исправлять. Мы его, конечно же, тестировали, но могли что-то упустить.