find ('all') слишком жадный, вам нужно быть более конкретным, если вы не хотите исчерпывать память.
Как указано выше, используйте поведение Containable. Если вам нужны только результаты из вашей таблицы (без связанных таблиц) и только для пары полей, более точный запрос, подобный этому, должен быть лучше:
$results = $this->YourModel->find('all', array(
'contain' => false,
'fields' => array('YourModel.name', 'YourModel.url')
);
Вам также следует подумать о добавлении механизма кэширования html (cakePHP имеет встроенную функцию или использует механизм , предложенный Мэттом Карри ).
Конечно, это будет кэшированная версия, и она не будет полностью соответствовать вашему списку. Если вы хотите больше контроля, вы всегда можете сохранить результат в кеше тортов (используя Cache :: write ), используя обратные вызовы afterSave / afterDelete вашей модели, чтобы обновить кэшированное значение и воссоздать кэшированный xml-файл отсюда. .