Озаботился кол-вом запросов к базе после этого поста http://drupal.ru/node/2096#comment-9457.
Оказывается что друпал грузит все включенные блоки.
Например: если на на всех страницах показывается 10 блоков (2 колонки) а на форуме 5 (1 колонка). то на форуме будут загружены все 10 блоков. Не спасает даже фильтр на показ блоков на определенных страницах.
Выяснил я это все с помощью модуля devel. Непонятно что происходит с анонимусами с включенным кэшированием.
Пока единственным вариантом для меня является вставка блоков непосредственно в шаблоны. Но тогда непонятно, что будет с кэшированием.
Комментарии
[b]"Непонятно что происходит с анонимусами с включенным кэшированием."[/b]
они кэшируются в первую очередь, причём всегда, даже при отключенном кэше...
я вот думаю, может вообще их отключить? создать админскую страницу (есть модуль даже для этого) и из неё переходить? зачем они будут каждый раз вставляться? создать ссылку на "добавить контент", да и всё? а в page.tpl просто разместить ссылки?
а как бы глянуть какие запросы идут для анонимусов. devel то работает для админов, т.е. с отключенным кэшем
непонял кого отключить?
devel работает для тех кому выставлены права на просмотр информации этого модуля.
[b]"а как бы глянуть какие запросы идут для анонимусов. devel то работает для админов, т.е. с отключенным кэшем"[/b]
а если разрешить devel для всех?
[b]"непонял кого отключить?"[/b]
блоки, прямо в page.tpl убрать упоминание о блоках, а вместо них вставить прямые ссылки, да и всё... блоки же не меняются постоянно, обычно это самая консервативная часть сайта, зачем её в базу данных-то пихать?
Что-то я не понял - от того, что отображение отключить, выборка блоков не прекратится... Или я не верно Вас понял?
а как быть с блоками например активности в форуме?
придётся пожертвовать или вывести этот код, например в footer
да, чегто я тормознул. Только он падла тоже кэшируется
Я могу и ошибаться, но у devel есть ещё и блок, который позволяет юзера текущего переключить. Может он поможет? (щас проверить быстро не могу...)
[b]Только он падла тоже кэшируется[/b]
вот и я об этом... невозможно узнать, сколько "на самом деле" потребляет Друпал...
[b]"Что-то я не понял - от того, что отображение отключить, выборка блоков не прекратится…"[/b]
так убрать в page.tpl вообще упоминание о функции (вызов функции) блоков, да и всё... тогда и не будет обрабатываться...
они грузяться независимо от темы. Т.е. сначала идет обработка всего модулей, блоков и т.д и в самом конце обработка темы в devel посмотри system_region_list, она загружается предпоследней. Получается что он берет все блоки, потом смотрит что у нас в шаблоне и вставляет уже нужное. Например у меня отдельный шаблон для морды. Я из него убрал вообще весь php кроме заголовков. При этом все равно грузят х нод которые должны быть на первой странице (promoted). Если убрать (promoted) у всех нод то будет грузиться приветствие. И не важно показывается это все в теме или нет.
да, плохо... тогда какая же это полная настройка сайта через шаблоны? получается "по-любому" надо лезть в код ядра...
для сайто типа этого имхо не страшно, т.к. все блоки есть на каждой странице, и роли не играет, но когда речь идет о темизации более менее серьезной, то пипец просто случается. т.е. сделать сайт типа lenta.ru задача нетривиальная.
никто не знает блоки вставленные напрямую в тему будут кэшироваться?
[b]"никто не знает блоки вставленные напрямую в тему будут кэшироваться?"[/b]
а зачем их напрямую вставлять, если Друпал всё равно сначала НЕ тему смотрит и кэширует то, что там есть?
да просто. делаем нужные блоки (не включаем). делаем шаблоны для разных страниц. в шаблоне вызываем нужные блоки.
что происходит:
друпал видит что блолков у нас нет и их не грузит. вызывает тему и тут уже идут наши блоки, но не все а только те что указаны в шаблоне.
В итоге вместо всех 40 блоков загружаются нужные 5-10. Кстати опять же это относятся к блокам со списками нод или еще чего-то что требует большого кол-ва обращений к базе. навигация, поиск, кто на сайте особа не грузят так- что можно не париться
хм... кстати, block.module можно просто отключить...
[b]Добавлено:[/b]
погорячился я, нельзя это сделать...
кстати, если будет что-то дельное из опыта "Друпала без блоков", то может кинешь сюда небольшое howto?
кстати 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
или нет?