Flight404
@Flight404
начинающий PHP - программист

Каким образом рациональнее выводить представление с данными пользователю с использование MVC шаблона PHP?

Задача вывести пользователю представление с данными из БД с использованием MVC шаблона.
Я вижу два варианта.
1) Controller генерирует view, получает данные от model и передает ассоциативный массив во view, далее средствами php осуществляет вывод view с данными.
2) Controller генерирует view без данных, далее по готовности DOM посылается AJAX запрос на другой метод Controller, который получает соответствующие данные от Model и возвращает в json формате данные, которые в обработчике succes в ajax выводятся на view.
Какой вариант реализации посоветуете?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 4
By_Engine
@By_Engine
Первый, конечно. В втором слишком много телодвижений для того же результата
Ответ написан
@danforth
Зависит от того, насколько долго данные выбираются из базы. Если меньше чем пинг до сервера, то разумней дождаться и передать шаблон уже отрендеренный. Если данные долго выбираются, можно отправить пользователю страницу, и показать какой-то лоадер, после чего отрисовать данные, полученные через AJAX.

Я делал даже как-то так:
1. Приходит запрос к серверу, на ответ дается скажем 100 мс.
2. Если за это время с базы ответ так и не пришел, мы отдаем юзеру страницу без данных, и URL с хешем, куда прийти за данными.
3. В это время база раздуплилась, и пришедший ответ мы ложим в кеш, так как на страницу уже не успели запрыгнуть.
4. На клиенте тем временем мы запросили наш URL с хешем, и ждем ответа от сервера, как только они появились в кеше, сервер сразу высылает ответ.

Делал это ради развлекухи, и не на PHP. На PHP такое реализовать сложнее.
Ответ написан
@Mindgrow
Второй вариант будет работать быстрее.
Если уверенно себя чувствуете то можете сразу такой вариант реализовывать.
Ответ написан
@Yan-s
Зависит от задачи. Оба варианта могут быть использованы.

Если у вас страница интерактивная, используется AJAX для основного контента, то верным будет второй способ. Иначе у вас будет дублирование в контроллере страницы и в контроллере AJAX.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы