Почему не стоит делать сайты на CMS
CMS являются очень популярным решением для создания сайта, но есть и обратная сторона медали, из-за которой лучше отказаться от них. Рассмотрим ключевые моменты, которые могут стать камнем преткновения для тех, кто ещё думает о сайте на CMS.
Системы управления контентом (Content Management System, CMS) — это программные платформы, которые позволяют людям без технических навыков создавать сайты и управлять ими. Многие действия происходят прямо в веб-интерфейсе — в административной панели управления. «Нажми на кнопку — получишь результат!» – звучит красиво, но давайте разберем всё по полочкам.
Почему создают сайты на CMS?
Поскольку CMS не требовательны к навыкам веб-мастера, то их часто выбирают новички. Продвинутые пользователи (веб-студии и рекламные агентства) также склонны к выбору CMS из-за простоты создания сайта на готовом дизайне, а также из-за возможности отдать создание сайта на аутсорс какому-нибудь фрилансеру (благо, под популярные CMS можно найти уйму исполнителей), если своего времени почему-то не хватает.
Обозначим причины, почему выбирают CMS.
В первую очередь, они сильно упрощают шаблонизацию страниц для оформления типовых страниц в едином стиле.
Другим важным моментом является готовая административная панель управления. Многим нравится в той или иной системе именно админка, из-за которой её и выбирают.
Ну и наконец, под CMS можно найти много готовых расширений (плагинов, модулей и т.п.), что делает их ещё более привлекательными — не нужно ничего программировать: «просто установи плагин и всё заработает» (на самом деле нет).
Ещё CMS удобны разработчикам тем, что всегда можно свалить вину на CMS или тему: дескать, проблема в системе и никак нельзя реализовать то-то и то-то или исправить такую-то ошибку. Иногда это правда.
Получается, что CMS чуть ли не идеальный кандидат для создания сайта?
Для начала рассмотрим, что не так с шаблонами.
Шаблон шаблону рознь
Термин «шаблон» имеет 2 понятия: это и готовый шаблонный дизайн (тема из коллекции дизайнов), и каркас свёрстанной страницы для программного движка (шаблонизатора).
Первое целиком относится к CMS, основная фишка которых заключается в выборе готового дизайна для сайта. Индивидуальный дизайн также возможен, но в отличие от фреймворков, где шаблоны очень гибки и позволяют отделить представление (вёрстку) от рабочей логики, CMS не используют шаблонизаторы, а сами шаблоны представляют из себя часть программного кода. Получается всё вперемешку — и код, и вёрстка. Фактически в таком шаблоне находится вся логика сайта. Именно по этому у вас вряд ли получится создать сайт на одной готовой теме, а затем сменить её на другую. С индивидуальным дизайном тоже не всё просто, ведь в шаблоне будет зашита вся индивидуальная логика вашего дизайна (сайта). Также в CMS нет понятия расширяемости (наследуемости) шаблонов, и если вы захотите поэкспериментировать с дизайном или, скажем, просто оформить сайт по-новогоднему, то придется либо вносить правки в текущую тему, либо создать отдельную тему (и реализовать в ней всё, что у вас было в вёрстке до этого).
Шаблонизаторы часто используются во фреймворках и призваны упростить управление шаблонами страниц, поддерживают наследуемость, а также гибкую реализацию шаблонной логики (условный и цикличный вывод). В шаблонизаторах предусмотрены инструменты для безопасного вывода. Продвинутые шаблонизаторы имеют возможность расширения на уровне приложения для отделения заковыристой логики обработки и вывода.
Если бы CMS следовали разделению логики и отображения, используя настоящий шаблонизатор, а систему тем строили бы поверх него, то это был бы действительно весомый плюс. А в том виде, в каком это реализовано, тянет на плюс с натяжкой, да и то, только для готовых дизайнов, в которых вы не собираетесь ничего подгонять по себя.
Почему же CMS придерживаются старого подхода в шаблонах, который использовался на заре становления массового интернета, годах этак в 2000-х? Ответ лежит на поверхности: они зарождались как раз в то далёкое время, а в последствии не имели возможности кардинально всё исправить. Это касается не только шаблонов, но и архитектуры в целом. Так что любая популярная CMS основана изначально на устаревших технологиях. Хотя в рекламе маркетологи, конечно, будут выдавать свой продукт за передовые технологии.
Административная панель
На первый взгляд действительно может показаться, что у CMS хорошая админка, особенно если она красиво выглядит. Но если посмотреть на возможности её расширения, то становится всё очень печально.
Кроме того, современные админ-панели должны (нет, они просто обязаны!) вести себя как SPA-приложение – работать быстро и без перезагрузок между переходами по страницам. Этим не могут похвастаться админки у популярных CMS.
Какой бы красивой с виду ни была бы админка, под капотом у неё масса недостатков, с которыми придется мириться (и страдать).
Модули и расширения
Несмотря на огромное количество расширений (плагинов, модулей) для CMS, толку в них не очень много. Качество сторонних расширений оставляет желать лучшего: они часто небезопасны, несовместимы с последними версиями систем, а нередко и с последними версиями PHP. Да что говорить о расширениях, если даже сами CMS порой не готовы к последним версиям PHP или требуют каких-то невменяемых (костыльных) настроек на сервере.
Конечно, можно написать необходимые расширения самостоятельно, но учитывая никчёмность архитектуры популярных CMS, это становится делать больно, долго и дорого.
Не стоит забывать, что чем больше у вас сторонних плагинов, тем ниже быстродействие сайта. Обычно, если сайту требуется более 7 расширений, то это верный признак, что CMS выбрана неправильно.
Быстродействие
Мы уже говорили про архитектуру CMS, если её вообще можно так назвать, потому что глядя на неё, создается впечатление, что код писали студенты в рамках дипломного проекта. Но главное кроется даже не в том, что код плохой, а в том, что такой код работает неоптимально. Сайт на CMS не выдерживает нагрузок, и чем популярнее будет ваш сайт, тем больше вы будете сталкиваться с тем, что сайт падает и не выполняет свои функции. Проблема частично может решаться добавлением мощностей для сервера или оптимизацией узких «горлышек». Но в конечном счёте сайт будет всегда упираться в ресурсы, сколь огромными они бы ни были. Кстати, оптимизация сайта с помощью одноименных плагинов обычно только вредит сайту. Нередки случаи, когда один плагин устраняет одну проблему, а добавляет ещё пять.
Почти в любом проекте узким местом является работа с БД. CMS в этом вопросе на несколько шагов впереди — работа с БД здесь происходит самым неоптимальным образом. И повлиять на это совсем невозможно — все схемы таблиц жёстко навязываются производителями CMS.
Очень показательны ситуации, когда в целях оптимизации быстродействия от CMS оставляют лишь админку, а сам сайт пишут на каком-нибудь фреймворке. Ничего хорошего из этого, конечно же, не выходит.
Иногда можно встретить даже подсистему фреймворка внутри темы сайта… Занавес!
Другим замедляющим фактором является исполнение фоновых процессов (очистка кеша, обработка сессий и т.п.) непосредственно при обработке входящего запроса, т.е. в процессе отдачи страницы пользователю. В некоторых случаях можно настроить, чтобы такие процессы выполнялись через систему Cron, но в силу разных причин далеко не каждый разработчик сайта на CMS прибегает к такому.
Безопасность
Нет, безусловно, производители CMS уделяют некоторое внимание безопасности, но уследить за всем просто невозможно: большая функциональность самой системы и её дополнений (расширений, плагинов) создаёт благородную почву для хакерских атак. Сайт на CMS может стать мишенью для злоумышленников.
Известные уязвимости постепенно устраняются. Однако же, встретить своевременное обновление на сайтах можно довольно редко. Владельцы сайтов порой отказываются обновлять систему, чтобы не поломать в очередной раз сайт, ведь часто с обновлениями добавляются и новые ошибки.
Можно сделать вывод: сайт на CMS никогда нельзя считать полностью безопасным.
Пригодность для разработки
Если вашему сайту требуется какая-либо нестандартная функциональность, то без разработки не обойтись. Даже если разработка будет представлять из себя только подключение и настройку расширений, то лучше всё это производить на локальном компьютере разработчика, протестировать и только потом загружать на боевой сайт.
Цивилизованный мир разработчиков давно привык вести любую разработку через систему контроля версий (чаще всего через Git). Но CMS не пригодны по своей природе для работы с ней. Некоторые энтузиасты всё же ухищряются, но это больше похоже на костыли.
CMS не разделяют наборы настроек для окружения, в котором работает сайт. Например, такие как доступ к БД, домен сайта, режим отладки и пр. Поэтому даже перенос готового сайта с локального компьютера на сервер сопряжён с рядом дополнительных трудностей.
Подбиваем итог
Итак, посмотрим на «плюсы» CMS:
- Шаблонизация – мимо.
- Админ панель – мимо.
- Расширения – мимо.
Среди весомых минусов:
- Низкое быстродействие – включено.
- Бреши в безопасности – имеются.
- Непригодность для разработки – в комплекте.
В действительности нет ни одной резонной причины выбирать создание сайта на CMS, если вы хотите получить качественный результат.