Данные макета cakePHP с использованием requestAction, есть ли другой способ?

Это известная проблема, requestAction — пустая трата ресурсов. однако мне нужны некоторые динамические данные в моем макете по умолчанию. Я использую для этого элементы с вызовами requestAction.
Это единственный способ?


person yossi    schedule 28.03.2011    source источник


Ответы (2)


В requestAction нет ничего плохого, просто его очень легко вызвать неэффективно и снизить производительность вашего приложения. Как это работает, вы в конечном итоге получите объекты-монстры со свойствами и т. Д. - вещи, которые вам не нужны и, вероятно, не вытащили бы, если бы вы поняли, что это произойдет именно так. Сколько разработчиков не потратили бы три дополнительных секунды на ввод $this->Other->Model->, если бы это избавило вас от потенциальной попытки отладки одного из этих гигантских объектов?

В 85 случаях из 100 существует более эффективный (производительность приложения) способ сделать все, что вам нужно, с помощью requestAction(). На самом деле в торт встроен еще один метод, который делает почти то же самое, только он предназначен для использования в контроллерах, и если я смогу его найти, я дам ссылку...

Изменить Не могу найти. Это что-то немного неясное.

Ответ/предложение на ваш вопрос, избегая requestAction особенно легко в представлениях/элементах.

Если данные менее абстрактны и более динамичны, ajax -> вызов вашего контроллера/метода, передача любых данных и т. д., получение вашего динамического результата.

Если данные очень абстрактны или применимы — например, они нужны вам в макете по умолчанию — подумайте о том, чтобы спрятать их в свой AppController или даже в загрузчик. Это, вероятно, гораздо более эффективное решение — вытолкнуть его из стадии процесса, а не перебирать вверх по течению, чтобы получить его на этапе рендеринга.

Компоненты/помощники, конечно, были бы еще одним способом позиционировать выборку данных представления с несколькими контроллерами + макетом.

ХТХ :)

person OpenSorceress    schedule 21.06.2011

Я считаю, что requestAction — хороший инструмент. Большинство фреймворков MVC даже не думают о необходимости отображать несколько частей контента, поэтому в большинстве случаев вам нужно это в одном макете. Я не уверен, как это тратит ресурсы и почему документация заставляет вас думать, что это узкое место в производительности. Используйте кэширование с правильными ключами, и это должно помочь.

person sibidiba    schedule 28.03.2011