Авторский проект IT-специалиста Олега Барабанова Персональные публикации на тему IT и не только…

Делаете небольшой сайт и устали от тормозов и сложности популярных 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, а именно:

Если еще проще, то 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 - это их выбор и их привычка. Я лично считаю, что микроскопом конечно можно забивать гвозди, но лучше для этого применять более подходящий инструмент.