Модуль, встраивающий виртуальную машину шаблонизатора CT++ (CTPP2) в веб-сервер Nginx. Симбиоз одного из самых быстрых шаблонизаторов и одного из самых производительных и легковесных веб-серверов позволяет максимально эффективно решать широкий спектр задач. Среди которых:
- Полное отделение представления от бизнес-логики и модели. Поскольку функция шаблонизации вообще выносится за пределы приложения и возлагается на веб-сервер, всё, что остается делать приложению, это выдавать данные в универсальном формате. Веб-сервер получает от бэкэнда (базы данных или сервера приложений) данные в формате JSON, при необходимости шаблонизирует и результат (html, atom, rss, xml, wml и т. д.) отдает клиенту. И вам больше не надо городить всю эту логику в приложении, отныне вы можете обрабатывать AJAX (точнее AJAJ) и обычные запросы — совершенно одинаково.
- Независимость представления от архитектуры \ языка \ платформы. Не важно на каком языке вы пишите, ваше веб-приложение может быть написано на Python, Erlang, Ruby, JavaScript, OCalm, Lisp, C, Java, PHP и т. д. или даже использовать несколько языков сразу, в разных частях. Также как и абсолютно не важен фреймворк, которым вы пользуетесь. Возможно завтра к вам придет прозрение, или же наоборот, стукнувшись головой о раковину вы впадете в глубокий маразм, и захотите переписать ваше приложение на другом языке, или другом фреймворке. Например, сегодня вы без ума от django, а завтра влюбитесь в pyramid. Не важно, самое главное, вам не придется трогать шаблоны вообще, всё, о чем вам нужно будет позаботиться, это отдача данных в формате JSON, что обычно делается легко и просто, благодаря наличию соответствующих библиотек практических для всех используемых в веб-разработке языков. В любом случае, JSON вам будет полезен для ваших асинхронных запросов из JavaScript.
- Экстремально высокая производительность шаблонизации легко, гибко и просто. В самом деле, всё, что вам надо сделать, это однажды собрать Nginx с данным модулем, и разобраться в парочке ключевых опций конфигурации. Которые, вместе с тем, в сочетании с остальными возможностями конфигурирования Nginx, дают вам огромные возможности и гибкость настройки. Вы можете настроить ваш Nginx так, чтобы он сам, в зависимости от запроса, решал, что делать с JSON данными, отдавать их так, или преобразовывать, а если преобразовывать, то в какой формат. А если вы найдете более производительный шаблонизатор, нежели CTPP 2, сопоставимый с ним по функциональности, дайте мне знать. Время генерации одной среднестатической html-странички с кучей динамического контента на весьма средней по характеристикам железке составляет менее 1 миллисекунды. Забудьте про необходимость кэшировать результата шаблонизации, готовой страницы. Не редко такое кэширование — это костыль. Это усложнение логики, необходимость решать задачи инвалидации, подпорочка к вашему медленному и низкопроизводительному решению. Разрабатывайте приложение которое изначально уже будет работать быстро.
- Экономия при обмене данными с бэкэндом. Благодаря тому, что до веб-сервера, практически конечной точки отдачи контента пользователю, передаются исключительно только динамические данные в достаточно компактном формате JSON, в противовес готовым html-страницам. Это снижает нагрузку на канал передачи и тем самым также уменьшает общую задержку. Особенно критично, если сервер приложений и веб-сервер являются физически разными машинами и обмен данными между ними происходит по сети.
Основные принципы, исповедуемые при разработке модуля:
- Максимальная производительность;
- Стабильность, достаточная для применения в высоконагруженных проектах в режиме 24⨯7;
- Экономный расход памяти;
- Гибкость в настройке;
- PROFIT!