PHP « Ускорение выполнения ajax операций в php framework'ах.

В php framework'ах ajax действия обрабатываются так же как и любые другие действия. При этом результат мы выдаем в виде json (чаще всего) ну или html при необходимости, а срабатывает куча классов и методов как при обычном построении страницы. Т.е. тратится куча ресурсов чтоб обработать запрос (пре диспатчеризация, диспатчеризация, пост диспатчеризация... куча плагинов, закрузка и выполнение ресурсов...) чтоб вставить 1 строку в базу и вывести {status: 1}

Есть какие нибудь способы ускорить выполнение ajax событий и обойты выполнение всех ненужных действий системы?

1 ответов


Так как ТС использует Zend Framework, то поясняю. Для обработки специфических запросов в ZF есть понятие контекста. Так вот для конкретно Ajax запросов используется AjaxContext.
Итак:


class Admin_UsersController extends Zend_Controller_Action {

    const USERS_PER_PAGE = 20;

  public $ajaxable = array(
    'list' => true
  );

  public function init() {
    $this->_helper->getHelper('AjaxContext')->initContext('json');
  }

  public function listAction() {
    $this->view->users = $this->_model->getUsers();
  }
}
 после этого если запрос передан обычным способом, то будет подключаться View и Layout, а если AJAX - то содержимое View просто закодируется в JSON.

Само никогда нигде ничего не происходит. если Вы вызыаете "куча классов и методов как при обычном построении страницы. Т.е. тратится куча ресурсов чтоб обработать запрос (пре диспатчеризация, диспатчеризация, пост диспатчеризация... куча плагинов, закрузка и выполнение ресурсов...) чтоб вставить 1 строку в базу и вывести {status: 1}" и больше не хотите такое вызывать, то не вызывайте. Ведь Вы автор программы? А если так, то никто кроме Вас не несет ответственности за то, как она работает и что в ней вызывается.


По большому счёту почти всегда через ajax требуется вернуть какую-либо информацию из базы данных, доступ к которой осуществляется как раз через классы freamwork'a, так что вряд ли удастся обойти это ограничение.
С другой стороны если выполняется просто какая-то функция, не взаимодействующая с БД, то можно создать файл, отдельно от framework'a, и обращаться ajax'ом к нему.