Сначала вопрос. Все ли друпаловские функции берут данные из кэша? Конкретно по функциям ничего не нашел.
Например.
Как я понял, чтобы получить только имя термина, то
сработает быстрее чем чистый запрос
Также ли это справедливо, если использовать node_lode() только для получения одного дополнительного поля?
Еще очень интересует user_load(), profile_load_profile(), profile2_load_multiple() и тд все что связано с юзерами и профилями.
Комментарии
Не все)
Вот что дало гугление 1 клик..у меня потом очень долго болела рука на мышке..Кто компенсирует данный тяжелый труд??
http://drupalace.ru/lesson/sistema-keshirovaniya-drupal-7-chast-pervaya-...
если создать корне друпала файл test.php и туда разместить элементарный тест
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
timer_start('test1');
node_load(1);
$time1 = timer_read('test1');
timer_stop('test1');
timer_start('test2');
node_load(1);
$time2 = timer_read('test2');
timer_stop('test2');
timer_start('test3');
node_load(1);
$time3 = timer_read('test3');
timer_stop('test3');
print $time1 . '<br />' . $time2 . '<br />' . $time3;
и в браузере запустить этот файл site.ru/test.php, то можно сделать определенные выводы
можно же посмотреть стек вызовов для node_load
1- https://api.drupal.org/api/drupal/modules%21node%21node.module/function/...
2- https://api.drupal.org/api/drupal/modules%21node%21node.module/function/...
3- https://api.drupal.org/api/drupal/includes%21common.inc/function/entity_...
4- https://api.drupal.org/api/drupal/includes%21entity.inc/function/DrupalD...
то же самое и для остальных сущностей
Запрос всегда быстрее, за исключением случаев когда терм лоад делается на странице термина
Ого, спасибо, всем.
Провел тесты с именем термина. Запрос победил.
term_load=> 3.59
запрос => 0.31
Меня собственно смутил комментарий xandeadx'а в одной его статье. Он там сказал, что term_load вообще не делает запроса.
dashiwa, спасибо за труд. Перед тем как писать сюда пост, я прочитал ту статью и понял, что и при кэшировании делается запрос к базе. Но опять же коммент xandeadx'а не давал мне покоя.
drupby, спасибо, полезный скриптик.
Ну можно Шлоссенгейла почитать и все станет еще яснее)
на странице термина не делает
ноде лоад тоже не делает на странице ноды
Ну на странице ноды доступна переменная $node.
Про термин тоже разобрался, там он уже в оперативной памяти.