Разрабатываю проект, который подрузомевает что восновном будут зарегистрированные посетители. Встает вопрос с нагрузкой почти на всех страницах есть по 5-7 блоков, часть из которых можно заменить выполняя загрузку views в tpl фалах.
встречал мнение что panels ускоряет загрузку блоков
Комментарии
подпишусь..
cache + sql + jade
Ну.. грубо говоря, что панели что блоки что шаблоны предназначены для позиционирования вывода инфы на странице..
А вот как и откуда эта инфа собирается и рендериться для вывода - тут наверное уже есть варианты по скорости..
Или эта инфа динамичная и для ее сбора необходимо выполнять десятки запросов к БД..
Или инфа относительно статична в течении некоторого периода времени - и ее можно кешировать и грузить из кеша, время-от-времени его обновляя..
Это понятно, где-то читал что если просто блоки - то они сначала грузится массив с информацией о всех блоках а потом фильтруются для определенной страницы. У панелей же грузится информация о странице и подгружаются определенные блоки.
Плюс еще вопрос при каком варианте можно настроить кеширование блоков наиболее гибко. Панели поддерживают cache_actions + встроенные возможности панелей.
У меня views блоки выводятся по условию. Например, если открыта страница forum*, то выводятся определенные views блоки по бокам. Если открыта страница history*, то отображаются другие блоки. И так с music*, blog*, gallery* и ещё 10...
Есть один проект, так там под 30 views блоков и нормально. Cache block enabled.
Через panels не пробовал, так как мне нравится произвольное расположение блоков. Тем более, если в будущем придется переводить работающие проекты на Drupal 8, то лучше использовать минимум модулей.
Вопрос интересен. Подпишусь.
gumk, и всё же мне кажется, что если условие не выполняется для вывода блока, то он (блок) не обращается к базе данных и т.п...
сам блок не обращается, но все блоки проверяются на принадлежность к данной странице, плюс если кто-то вдруг не задал четкого расположения блока, то он делает запрос но пустой не выводится.
а вот кеширование по условию мне кажтеся лучше, например кеш блока, содержащего последние новости обновлять только при изменении, удалении, добавлении новой новости. Для блоков интересно есть такое решение?
Так и есть... содержимое блоков генерируется только для необходимых блоков..
Кстати... для настройки вывода контента есть еще мощный модуль Display Suite..
Позволяет определять специальные шаблоны для отображения материалов..
Есть готовые многоколоночные шаблоны, но можно определить и свои.
Добавлять к материалам "виртуальные" поля, например вывод вьюса(в настройках отображения полей типа материала).. и многое многое другое...
Спасибо, это просто отлично, что инвизибл блок не исполняет запрос к базе...
Где-то читал про Display Suite, но наверное стоит протестировать
в друпале 6 было так: чем больше регионов и блоков в них - тем сильней тормоза. В семерке этой закономерности не прослеживаю, но все равно думаю что быстрее будут шаблоны + views блоки.
Кроме того я всегда придерживался мнения, что если можно обойтись без модуля, то нужно обойтись без модуля.
А вывести блок вьюхи в шаблоне просто:
print render($block);
длинная строка это походу ID вьюхи, он может быть и человеко-понятным, зависит от суммарной длины системного названия вьюхи и его представления