Делаете небольшой сайт и устали от тормозов и сложности популярных CMS? Присмотритесь к различным Flat-File CMS!
Дисклеймер для ярых поклонников конкретных CMS и фреймворков.
Сразу хочу предупредить, что я ни в коем случае не умаляю преимуществ таких CMS как Wordpress, ModX, Drupal, Joomla,
Bitrixи пр. Это крупные и серьезные проекты, с большим комьюнити и поддержкой. Каждая крупная CMS имеет свои особенности, плюсы и минусы, а также предназначение - совокупность этих факторов позволяет выбрать конкретную CMS как предпочтительную. В этой статье я как-раз акцентрирую внимание на нише CMS систем, где функционал вышеперечисленных CMS избыточен.
Также в этой статье я не задеваю тему использования различных фреймворков и генераторов контента, т.к. эта тема отдельной статьи.
Что за тип такой Flat-File CMS?
Flat-File CMS - это не конкретная CMS, а общая классификация систем управления контентом которые используют для хранения своих данных статические файлы, а не СУБД. При этом данные всеравно зачастую хранятся в структурированном формате, аля XML, JSON или YAML. В одних CMS это может быть один файл, а в других (аля GetSimpleCMS) - это может быть множество файлов, в которых также обычно хранится служебная информация для быстрой работы системы..
Преимущества такого рода CMS вытекают из недостатков database-like CMS, а именно:
- Простота технического администрирования - нет необходимости мониторить работу СУБД, достаточно следить только за самой CMS. Нужно сделать бэкап или копию - просто сделайте архив или подключите GIT;
- Простота системы администрирования - в силу общей простоты такие системы обычно имеют несложную систему администрирования, что нередко является ОГРОМНЫМ плюсом для тех, кто не каждый день работает с админкой сайта.
- Скорость - т.к. отсутствуют затраты на соединение к БД, которые бывают довольно-таки ощутимыми;
- Надежность - которая исходит из простоты. Я думаю каждый из нас встречал сайты который не работали из-за упавшей СУБД;
- Примитивность API - зачастую такие системы не имеют сложного API и поэтому если вам нужно что-то доработать под себя, разобраться в них не сложно.
Если еще проще, то Flat-File CMS занимают нишу простых CMS для простых задач и все.
Еще в IT-Record мы обратили внимание, что клиенты очень не любят сложные системы администрирования с малопонятными им терминами. Вы думаете обычному клиенту интересно знать, что такое таксономия в Drupal или что такое чанки в ModX? Вы конечно можете это внести в документацию и потребовать, чтобы с системой администрирования работал специально обученный человек, но это уже переусложнение.
Возьмем пример для разработчиков. Я заметил что большинство разработчиков терпеть не может делать диаграммы классов и прочие схемы в UML. А представим, что вам придется принудительно браться за редактор раз в пару недель и каждый раз вспоминать (даже с подсказками), что конкретные стрелочки и фигуры значат. Для тех кто часто работает с UML - это не проблема, а вот кто нечасто - им намного грустнее.
По вышеописанной аналогии, разработчики должны понимать и то, как к системе администрирования относятся клиенты небольших сайтов. Человек может отлично разбираться в своей сфере, быть супер-инженером, врачом или переводчиком и отлично знать предметную область. Но система администрирования вашей CMS может быть настолько напичкана разными терминами, что пользователь системы начинает "перегружаться" и "уставать" - ибо это умственная работа. Им обычно нужно открыть админку несколько раз за месяц, чтото подправить, потратить на это пару минут и дальше вернуться к своим делам.
В средних и больших проектах конечно без сложного функционала никуда, но вот в маленьких проектах это нафиг не нужно и только мешает.
В каких случаях Flat-file CMS отлично подойдут к применению?
Flat-file CMS удобны в случае, если ваш сайт не имеет большое количество разнотипных сущностей со сложными связями друг с другом (особенно "много-ко-многим"), такие как:
- лендинги;
- сайты-визитки (компании, проекта и пр.);
- промо-сайты;
- небольшие интернет-каталоги;
- личные блоги и т.д.
Как видим - это сайты, которые в основном работают в read-only режиме. А в большинстве случаев большего и не надо.
Если же ваш сайт требует функционал сложного поиска, сложных связей между сущностями,а количество этих сущностей исчисляется тысячами - то это уже идеальная работа для СУБД и Flat-file CMS тут совсем не подойдут.
Также если вы привыкли к огромному количеству низкокачественных плагинов, как у WordPress - то такие системы к сожалению не имеют такого обширного выбора и соответственно вам не подойдут.
А что делать, если неожиданно понадобился функционал СУБД в Flat-File CMS ?
CMS "на файлах" вполне может использовать дополнительные источники данных, такие как СУБД, внешние сервисы (REST, JSON-RPC и пр.) и различные службы, такие как OAuth для авторизации.
Для той же коммерции немало людей используют готовые платформы, по типу Ecwid, для встраивания функционала интернет-магазина в свой сайт. Хотите на сайте комментарии - подключайте Disqus и т.д. Причем применение вышеперечисленных примеров вообще особо не зависит от CMS.
Если позднее понадобиться для определенной части сайта использовать СУБД - то стоит присмотреться в сторону Sqlite. Эту базу данных очень недооценивают, при грамотном её использовании она может очень многое.
А если все-таки Flat-File CMS не подходит, но и обычные CMS слишком тяжелые?
Тогда вам стоит присмотреться к системам, основанным на уже упоминаемой в статье СУБД Sqlite. Из крупных CMS c Sqlite умеет работать только Drupal, да и то - он совсем не оптимизирован под работу с этой СУБД.
У себя в IT-Record мы разрабатывали собственную CMS, оптимизированную под Sqlite и до сих пор есть несколько проектов, которые работают на данной системе. На практике мы убедились, что соотношение "(Надежность + Скорость + Простота) / Затраты" оказалась на высоте. Возможно я не поленюсь и когда-нибудь опишу, как стоит настроить работу с Sqlite, какие PRAGMA стоит задать, а также какие есть подводные камни. Но повторюсь, при правильной настройке и понимании этой СУБД - с ней можно творить удивительные вещи.
Список различных существующих Flat-File CMS большой. Могу вам посоветовать обратить внимание на этот размещенный и постоянно пополняемый на GitHub список . Я в основном в работе применял GetSimpleCMS, но у нее, если быть откровенным, в последние годы сильно затормозилось развитие.
Заключение
В статье я не стал акцентрировать внимание на конкретной CMS - т.к. их огромное количество, достаточно подобрать удобную под себя. Такого рода CMS обычно не имеют сложную структуру внутри себя - поэтому вы не потратите много времени на изучение.
Я просто хотел обратить внимание на то, что не существует одной универсальной системы. Если нужна открытая платформа для e-commerce - я посмотрю в сторону OpenCart, если нужен небольшой и быстрый сайт - GravCMS, GetSimpleCMS или другие Flat-File CMS.
Конечно есть люди, которые считают что можно все делать только на Wordpress - это их выбор и их привычка. Я лично считаю, что микроскопом конечно можно забивать гвозди, но лучше для этого применять более подходящий инструмент.