В последнее время мне всё больше нравится такая схема разработки веб-приложений:
- Берётся веб-сервер который умеет хорошо раздавать статику и поддерживает FastCGI. Например, nginx.
- Все html, css и js раздаются им исключительно статически.
- Динамической шаблонизации нет, если какой-то html нужно собирать из кусков (шаблонов, комбинаторов, etc.), то это делается статически, а не во время отдачи клиенту.
- Динамических путей (routes) тоже нет - только поддерживаемые веб-сервером.
- Если страница всё же должна содержать динамический контент, то в статически отдаваемом html делается пустой div и пишется js-приложение которое асинхронно загружает в него нужное с fastCGI ресурса аяксом.
- Протоколом между js-приложением и fastCGI ресурсом может служить bison (бинарный JSON).
- Сами fastCGI-приложения более менее независимы друг от друга (но могут быть DB зависимы) и могут писаться на любом удобном языке (language agnostic).
- Если сильно нужно, то для динамических путей можно сделать redirect на fastCGI ресурс средствами веб-сервера. Или сразу использовать URI таких ресурсов.
Как я понимаю, тут преимущества в том, что, во-первых, часть работы переносится на клиента (js-приложения, загружающие динамический контент) и, во-вторых, с помощью bison можно несколько ужать трафик. Но, с другой стороны, поисковики не могут индексировать такой динамический контент (?).
Какие ещё могут быть проблемы с такой схемой? Кто-нибудь вообще так делает?