Колличество sql запросов и блоки

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

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 15:37

Озаботился кол-вом запросов к базе после этого поста http://drupal.ru/node/2096#comment-9457.
Оказывается что друпал грузит все включенные блоки.
Например: если на на всех страницах показывается 10 блоков (2 колонки) а на форуме 5 (1 колонка). то на форуме будут загружены все 10 блоков. Не спасает даже фильтр на показ блоков на определенных страницах.
Выяснил я это все с помощью модуля devel. Непонятно что происходит с анонимусами с включенным кэшированием.

Пока единственным вариантом для меня является вставка блоков непосредственно в шаблоны. Но тогда непонятно, что будет с кэшированием.

Комментарии

Аватар пользователя B.X B.X 1 сентября 2006 в 15:47

[b]"Непонятно что происходит с анонимусами с включенным кэшированием."[/b]
они кэшируются в первую очередь, причём всегда, даже при отключенном кэше...

я вот думаю, может вообще их отключить? создать админскую страницу (есть модуль даже для этого) и из неё переходить? зачем они будут каждый раз вставляться? создать ссылку на "добавить контент", да и всё? а в page.tpl просто разместить ссылки?

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 16:48

Quote:
они кэшируются в первую очередь, причём всегда, даже при отключенном кэше…

а как бы глянуть какие запросы идут для анонимусов. devel то работает для админов, т.е. с отключенным кэшем
Quote:
я вот думаю, может вообще их отключить?

непонял кого отключить?

Аватар пользователя B.X B.X 1 сентября 2006 в 16:52

[b]"а как бы глянуть какие запросы идут для анонимусов. devel то работает для админов, т.е. с отключенным кэшем"[/b]
а если разрешить devel для всех?
[b]"непонял кого отключить?"[/b]
блоки, прямо в page.tpl убрать упоминание о блоках, а вместо них вставить прямые ссылки, да и всё... блоки же не меняются постоянно, обычно это самая консервативная часть сайта, зачем её в базу данных-то пихать?

Аватар пользователя rgb rgb 1 сентября 2006 в 17:54

Quote:
блоки, прямо в page.tpl убрать упоминание о блоках, а вместо них вставить прямые ссылки, да и всё

Что-то я не понял - от того, что отображение отключить, выборка блоков не прекратится... Или я не верно Вас понял?

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 17:10

Quote:
devel работает для тех кому выставлены права на просмотр информации этого модуля

да, чегто я тормознул. Только он падла тоже кэшируется

Аватар пользователя rgb rgb 1 сентября 2006 в 17:56

Quote:
Только он падла тоже кэшируется

Я могу и ошибаться, но у devel есть ещё и блок, который позволяет юзера текущего переключить. Может он поможет? (щас проверить быстро не могу...)

Аватар пользователя B.X B.X 1 сентября 2006 в 17:12

[b]Только он падла тоже кэшируется[/b]
вот и я об этом... невозможно узнать, сколько "на самом деле" потребляет Друпал...

Аватар пользователя B.X B.X 1 сентября 2006 в 19:16

[b]"Что-то я не понял - от того, что отображение отключить, выборка блоков не прекратится…"[/b]
так убрать в page.tpl вообще упоминание о функции (вызов функции) блоков, да и всё... тогда и не будет обрабатываться...

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 20:33

Quote:
так убрать в page.tpl вообще упоминание о функции (вызов функции) блоков, да и всё… тогда и не будет обрабатываться…

они грузяться независимо от темы. Т.е. сначала идет обработка всего модулей, блоков и т.д и в самом конце обработка темы в devel посмотри system_region_list, она загружается предпоследней. Получается что он берет все блоки, потом смотрит что у нас в шаблоне и вставляет уже нужное. Например у меня отдельный шаблон для морды. Я из него убрал вообще весь php кроме заголовков. При этом все равно грузят х нод которые должны быть на первой странице (promoted). Если убрать (promoted) у всех нод то будет грузиться приветствие. И не важно показывается это все в теме или нет.

Аватар пользователя B.X B.X 1 сентября 2006 в 20:42

да, плохо... тогда какая же это полная настройка сайта через шаблоны? получается "по-любому" надо лезть в код ядра...

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 20:51

для сайто типа этого имхо не страшно, т.к. все блоки есть на каждой странице, и роли не играет, но когда речь идет о темизации более менее серьезной, то пипец просто случается. т.е. сделать сайт типа lenta.ru задача нетривиальная.

Аватар пользователя B.X B.X 1 сентября 2006 в 21:58

[b]"никто не знает блоки вставленные напрямую в тему будут кэшироваться?"[/b]
а зачем их напрямую вставлять, если Друпал всё равно сначала НЕ тему смотрит и кэширует то, что там есть?

Аватар пользователя dyp@drupal.org dyp@drupal.org 1 сентября 2006 в 22:29

да просто. делаем нужные блоки (не включаем). делаем шаблоны для разных страниц. в шаблоне вызываем нужные блоки.
что происходит:
друпал видит что блолков у нас нет и их не грузит. вызывает тему и тут уже идут наши блоки, но не все а только те что указаны в шаблоне.
В итоге вместо всех 40 блоков загружаются нужные 5-10. Кстати опять же это относятся к блокам со списками нод или еще чего-то что требует большого кол-ва обращений к базе. навигация, поиск, кто на сайте особа не грузят так- что можно не париться

Аватар пользователя B.X B.X 1 сентября 2006 в 22:35

хм... кстати, block.module можно просто отключить...
[b]Добавлено:[/b]
погорячился я, нельзя это сделать...
кстати, если будет что-то дельное из опыта "Друпала без блоков", то может кинешь сюда небольшое howto?

Аватар пользователя dyp@drupal.org dyp@drupal.org 6 сентября 2006 в 1:34

кстати drupal_lookup_path у меня больше всего запросов выдает. Я подумал что когда мы знаем адрес ноды то не обязательно каждый раз запрашивать ссылку для комментариев, и пр. имеющих стнадартные пути:
зная /node/x
мы знаем
/comment/reply/x#comment_form
/comment/reply/x/y
/forward/x
/node/x/print
/node/x/edit
/node/x/track
/node/x/outline

или нет?