Существует мнение, что Views на Drupal 7 сильно грузит систему, особенно если на главной странице сразу 4-5 вьюшек. Я и сам с подобным сталкиваюсь. Устанавливаю чистый D7 (minimal) загружается все моментально
Только подключаю вьюшки, время загрузки увеличивается сразу в несоклько раз. Иногда даже раз в 10 дольше ждать приходится причем не только у меня и не только на моем компе. Отключаю вьюшки, отключаю модуль, удаляю все его компоненты и записи из базы, опять двиг летает.
Хотел попробовать сниппетами повыводить, но нигде не нашел хорошей инструкции для D7 (находил только для D5 и D6), никогда с ними не работал. Может кто подскажет направление в котором шагать, как в шаблонах типа block--block--1.tpl.php обходиться без Views? (Например вывести в этом блоке 10 материалов типа "page" вместе с необходимыми полями)
Комментарии
Вы думаете, что в этом виноват вьювс?
Можете провести небольшой бенчмарк, ставите devel, смотрите на его показатели(память, SQL, время генерации страницы) со вьювс, потом со снипетом, потом со своим модулем, будете весьма удивлены.
Вот вариант снипета, 10 материалов в виде тизеров для опубликованных нод типа page:
<?php
//Ищем 10 сущностей нод
$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'page')
->propertyCondition('status', 1)
->range(0, 10)->execute();
//Если что-то нашлось:
if (isset($result['node'])) {
//Загружаем сущности нод
$nodes = entity_load('node', array_keys($result['node']));
//Выводим, как нам нравится, например, в виде тизеров
print drupal_render(node_view_multiple($nodes));
}
?>
Интересно, можно ли к этому снипету прикрепить постраничную навигацию? Или каким нибудь другим способом сделать навигацию не прибегая к views?
http://habrahabr.ru/post/135894/
А вообще оптимизируйте вьюхи, например, включив там кеширование
Немного поправить в соответствии с API. Общий принцип показан.
Кеш вьюсов создастся при заходе первого посетителя, остальные посетители при заходе на сайт получат информацию из кеша до следующего его сброса.
Views обоснован на несложных выборках как у ТС + кеш блоков для анонимов при большой посещении кул, но не панацея, а часто и проблема для мало мальски более сложных запросах.
несколько простых истин:
1 да, вьювс жрет память, но не так много, как кажется, принципиально только если хостинг выдает 32 метра лимита памяти PHP и менять его не вариант.
2 вьювс работает на несколько мс медленнее чем свой модуль(разницу заметить сложно)
3 сниппет, созданый как PHP содержимое блока\ноды выполняется через eval, что приводит к ряду неприятных последствий(синтаксическая ошибка способна положить весь сайт, код выполняется очень медленно, к тому же, на сколько мне известно, не кешируется акселераторами и т.д.), на дешевых хостингах обработка таких сниппетов может измеряться вообще в секундах.
4 сниппет, созданный в шаблоне не кешируется вообще(если нет модуля boost, например, или еще какой либо реализации кеширования статики), а если сам запрос еще и медленный, то Ваш сайт станет очень уязвим для DDOS атак.
5 главным ручным тормозом является запрос к БД и не важно чем он вызван.
6 сниппеты в некоторых условиях способны значительно сократить время разработки.
7 вьювс легче большинства модулей ядра.
8 вьювс ускоряет разработку, масштабируем и т.д. и т.п.
Самый большой недостаток views - это отсутствие поддержки связанных с содержимым отбираемого в фильтрах ( в них должны попадать значения из контента который отбирается а не все возможное, так же при формировании фильтров должны учитываться уже установленные поля фильтра ) зависимы фильтры - не реализованы и хотя есть contrib пытающиеся реализовать это для views - они не решают задачу.![](http://drupal.ru/files/regular_smile.gif)
sas@drupal.org,
Это не недостаток. Это просто отсутствующая фича. Вам ничего не мешает написать расширение, реализующее ваши хотелки..
Дада хорошая фича.
Я уважаю Ваше мнение, но к достоинствам отсутствие этого функционала отнести не могу
А я не утверждаю, что это достоинство. Просто некорректно записывать в недостатки то, что не является базовым функционалом и что автор модуля не закладывал.
Это было бы недостатком, если Views был плохорасширяемым модулем, и на самом деле мешал реализовать эти функции.
Реализация как расширение в views данной функции занимает больше времени чем в своем модуле, и я это говорю так как вопрос был не праздный и не теоретический и для views я писал расширения в тех случаях когда это было целесообразно, но не в этом случае ...
можно
Спасибо, а по подробней можно? Что и куда?)
theme('pager') к написанному выше
Спасибо, щас протестирую!