Рентабельность генерации контента в ajax запросах

Сложилась такая ситуация, что начал программировать сайт на jquery+php(около 4 месяцев назад), проводя всё больше времени за кодом пришло понимание что, всё что я делаю не имеет ни какой масштабируемости и вариативности. После познакомился с ООП в php, моей радости не было предела. На моём сайте куча таблиц с редактируемыми td-шками и прочими сложностями напрямую связанные с базой и чтобы не строить одни и те же ячейки по сто раз(часто от таблицы к таблице ячейки повторяются) при загрузке страницы я обрабатываю любую таблицу ajax запросом, где на обратной стороне генерится html код через классы php просто передав ему название таблицы и id-шники th. Мне так понравился данный способ, что я теперь хочу генерить любой сложный контент напрямую зависящий от базы в ajax запросах. Есть ли у данного способа минусы или любые более адекватные аналоги? Немного почитал про vue.js мне очень понравилась структура построения данных, но js код не может связаться с базой как с этим быть. Я новичок и не кидайте пожалуйста палками, буду рад любой информации и построении сложных масштабируемых проектах и какие технологии для этого подходят.


Ответы (1 шт):

Автор решения: Гончаров Александр

Подход стандартный, вы получаете html не всей страницы, а только блока. Такой блок называется виджет.

Есть ли у данного способа минусы

Да, есть. Вот например в вашем сервисе есть какая-то система прав ACL. Запросы в эту систему могут быть довольно тяжёлые. Для каждой загрузки виджета придётся проверять, имеет ли залогиненный юзер(который запрашивает виджет) права доступа к загружаемому контенту.

И потом, думаю врядли вы это сделали именно таким образом: правильно при загрузке построить страницу целиком готовую к работе без ajax запросов. То есть построить готовый HTML, те-же виджеты вывести в правильные места используя PHP: но иметь возможность дёргать их отдельно через ajax. Вот это топ, и отлично ложится на MVC.

Почему так правильно - потому что много запросов на бекенд на пустом месте: это плохо, это будет грузить сервер(как минимум отъестся cpu/ram/время-сетевого-пинга на подключение к БД, кешу, инициализацию общих сервисов - на каждый ajax) + это создаст неприятные впечатления у юзеров, им придётся ещё чего-то ждать, тогда как страница уже загрузилась, или наблюдать ненавистное колёсико загрузки каждый переход на новую страницу.

Поскольку вы новичок(возможно вы ещё не в курсе), порекомендую посмотреть в сторону PHP-фреймворков с базой MVC, использующих ActiveRecord и ORM : этого c головой достаточно, чтобы порядок был в коде на любом сайте, хоть масштаба фейсбука. В том числе встраивается такая вот система для виждетов - которая собирает страницу из отдельных блоков без ajax, но может каждый отдельный блок запросить отдельно (например после пользовательских действий с UI).

→ Ссылка