Какой самый быстрый метод/реализация для обратного вызова Ajax?
У меня есть карта, которая загружает маркеры через ajax на различные/многочисленные события карты. В настоящее время я определяю пользовательский обратный вызов страницы для моего элемента hook_menu()
, который печатает мой json/js.
Поскольку мой обратный вызов страницы не возвращает никакого содержимого и печатает только содержимое , Drupal не отображает полный шаблон, меню и т. Д. И, Таким образом, позволяет мне возвращать страницу с только моим JavaScript.
Хотя это действительно работает, я считаю, что Drupal все еще полностью начальная загрузка, что означает, что это добавляет много накладных расходов, которые я хотел бы снизить.
Я рассматривал Высокопроизводительный обработчик обратного вызова JavaScript, который может похвастаться "Высокопроизводительным обработчиком обратного вызова JavaScript" и который, короче говоря, выглядит так, как будто он предлагает js.php
в дополнение к index.php
направлять ваши запросы и настраивать/ограничивать/оптимизировать загрузку, которую Drupal выполняет по умолчанию.
К сожалению, проект js не имеет выпуска D7 и все же ( ходатайство об одном здесь ), которое ведет нас к началу...
Какой самый быстрый способ реализовать обратный вызов Ajax в Drupal?
3 answers
Я определяю пользовательский обратный вызов страницы для моего элемента
hook_menu()
, который печатает мой json/js.
Это то, что предлагал Drupal 6. Фреймворк Drupal 7 AJAX может сделать немного больше, чем это. Да, он загружает Drupal, но он также предоставляет множество бесплатных функций. Короче говоря, вы можете использовать ajax_deliver() в качестве метода доставки страниц и отправлять команды в браузер.
... Ajax может быть включен путем добавления классов к кнопкам и ссылкам. Путем добавления класс 'use-ajax' для ссылки, ссылка будет загружена с помощью вызова Ajax. При использовании этого метода ссылка href ссылки может содержать "/nojs/" как часть пути. Когда платформа Ajax сделает запрос, она преобразует его в "/ajax/". Затем сервер может легко определить, был ли этот запрос сделан с помощью фактического запроса Ajax или в ухудшенном состоянии, и ответить соответствующим образом.
Однако, если вы хотите обойти рамки по соображениям производительности, тогда вам нечего останавливать вы вызываете php-файлы в своем модуле непосредственно из javascript. Вы не получите никакой пользы от Drupal, но у вас также будет полный контроль над страницей.
Немного поздно, но особенно если вы используете этот обратный вызов ajax для опроса (например, проверьте наличие новых сообщений), есть интересная альтернатива: Drupal node.js интеграция.
Вместо опроса это позволяет вам создавать систему, подобную событию, в которой пользователи (они же JS на своей странице) поддерживают открытое соединение с вашим node.js сервер. Если что-то случится, вы можете напрямую уведомить всех пользователей через node.js .
Поскольку вы хотите реализовать обратный вызов Ajax в Drupal, использование модуля JS выглядит хорошей ставкой. Я просто бегло взглянул на код, и это в основном то, что я бы предложил (но с гораздо большим вниманием к деталям). Сопровождающий также является одним из лучших разработчиков Drupal.
Похоже, вам придется использовать module_load_include()
или, возможно, более ручной подход include 'sites/all/modules/contrib/...';
, если вам нужно использовать API из других модулей.
Сама проблема, о которой вы говорите, была горячая тема в последнее время. Основной доклад Дриса из DrupalCon Chicago говорил о том, как Drupal 8 нуждается в улучшенных API для выполнения обратных вызовов и форматов вывода, отличных от HTML.