Есть ли разница в запросах к БД?

Главные вкладки

Аватар пользователя Gopinich Gopinich 28 октября 2019 в 21:20

Здравствуйте.
Есть два варианта вывода полей:

  1. Стандартное (print render($content['поле'])
  2. и через views (через Контекстные фильтры по NID выводятся поля в ноду)

Вопрос: есть ли разница в производительности?

Комментарии

Аватар пользователя adano adano 29 октября 2019 в 3:30
1

Шаблонная темизация априори производительней вьюшной...
Но, на сегодня (конец 2019), даже при ресурсах дешевого хостинга (3$), этой разницы вы не "почувствуете".
Вопрос лишь в skill'ах, поддержке и возможностях. Кому-то первое "роднее", кому-то второе... отсюда и холивары хорошие выходят.

Аватар пользователя VasyOK VasyOK 29 октября 2019 в 11:54
1

Почему только "print render($content['поле']"? Ведь можно практически все элементы сайта так отрендерить. Я не понимаю зачем Друпал тем, кто выводит все программно.

Аватар пользователя Gopinich Gopinich 29 октября 2019 в 13:24

VasyOK wrote:
Почему только "print render($content['поле']"? Ведь можно практически все элементы сайта так отрендерить. Я не понимаю зачем Друпал тем, кто выводит все программно.

Просто информации слишком много. И она устаревает. Раньше кричали, что Друпал слишком базу данных дергает сильно. Вот и решил программно может быть вывести?
Но тут сказали, что разницы в 2019 особо нет....

Аватар пользователя gun_dose gun_dose 29 октября 2019 в 20:05
1

Вообще-то, если выводить ноду через стандартный шаблон и если выводить так, как выводит автор, количество запросов в базу не изменится.

Аватар пользователя Gopinich Gopinich 29 октября 2019 в 20:18

gun_dose wrote:
Вообще-то, если выводить ноду через стандартный шаблон и если выводить так, как выводит автор, количество запросов в базу не изменится.

Это почему это? По идее views же удвоит запросы?

Аватар пользователя gun_dose gun_dose 29 октября 2019 в 20:59
1

Это скорее к комментарию пользователя VasyOK про "программный вывод". Что касается вьюсов, они нормально кэшируются. Кроме того, запрос ноды с контекстным фильтром даже на огромной выборке займёт очень мало времени.

А вообще, нужно поставить devel и вывести блок со статистикой запросов, чтобы понять их количество и время выполнения.

Аватар пользователя Alex1989_drupal Alex1989_drupal 29 октября 2019 в 21:45

У меня при кэшировании блока на ноде с контекстным фильтром "Кэшировать единожды всё (глобально)" он вообще почему-то перестает выводиться.