Кэшируются ли представления с помощью основных механизмов кэширования или я должен устанавливать кэширование непосредственно в каждом представлении?

23

Я вижу настройки кеша в каждом из моих просмотров. Нужно ли мне устанавливать их или основные механизмы кэширования в / admin / config / development / performance автоматически выполняют некоторые из этих действий, и эти "дополнительные настройки" в представлениях используются, если я хочу переопределить поведение по умолчанию для кэширования ядра drupal?

введите описание изображения здесь

Найджел Уотерс
источник
Мне интересно этот точный вопрос. Переопределяют ли определенные параметры кэша Views параметры кэширования производительности Drupal Core? Логично, что я думаю, что так оно и будет, но это не обязательно можно предположить.
Дэвид Чсонка
Я получил награду за это, потому что я действительно хотел бы понять это лучше.
Дэвид Чсонка

Ответы:

38

ЧТО: Кеширование производительности ядра хранит и обслуживает всю отображаемую страницу с идентификатором кэша URL. Кэширование представлений выходит за рамки этого, чтобы кэшировать только вывод представления.

ПОЧЕМУ: Это отлично подходит для зарегистрированных пользователей; другие блоки на странице могут быть более динамичными, но представлению не нужно каждый раз запускать запрос для каждого пользователя ... только случайный пользователь, который генерирует кэш страницы по истечении срока действия кеша.

НАСТРОЙКИ: Разрешение «визуализированного вывода» быть более свежим, чем запрос, полезно для таких вещей, как маркировка контента как нового, в противном случае просто сопоставьте его.

БОЛЬШАЯ КАРТИНА: Drupal динамически обслуживает страницы, используя сервер для создания страниц на PHP и доступа к базе данных (или кэшу в памяти). Это позволяет использовать потрясающие функции и скорость работы с редактором контента ... но для понимания необходимости кэширования нужно делать правильно.

МОДУЛИ!

Есть также прекрасный модуль Content Content Cache, который очищает кэш просмотров при редактировании контента. Если вы хотите пойти дальше, вы также можете проверить действия кэша , я бы порекомендовал Правила для более точной настройки.

Кроме того, Blockcache Alter позволяет вам устанавливать параметры кэширования «для каждой роли», страницы, пользователя и т. Д. Для каждого блока на вашем сайте.

Вы также можете добавить менеджер страниц и панелей . Это позволяет вам делать интересные вещи, такие как установка кэша «на пользователя», «на роль» или ряд других очень полезных конфигураций. Хотя я лично избегаю панелей.

ДОКУМЕНТАЦИЯ: Для кэширования и производительности в целом посетите страницу Drupal.org .

doublejosh
источник
Этот ответ действительно хорош. Up-голосование. Я добавил раздел «Диспетчер страниц» и «Панели», и теперь ответ может быть в основном полным.
Летарион
Нужно ли включить базовую производительность «блочное кеширование», чтобы кеширование работало в представлениях?
Дэвид Цсонка
Спасибо за добавление информации о менеджере страниц / панелях - потому что после добавления награды за это я понял, что мне также интересно узнать о кешировании мини-панелей. Мне было интересно, переопределяет ли базовая производительность «блочное кеширование» или требуется, чтобы мини-панели «Простое кэширование» были эффективными.
Дэвид Цсонка
1
Кэширование блоков действительно будет кэшировать выходные данные блоков независимо от настроек кэширования ваших представлений ... так же, как и кеш страниц. Если у вас есть время жизни кэша страниц в течение 12 часов, то кэш представления не имеет значения, потому что эти страницы больше не обрабатываются, они просто обслуживаются из кэша.
doublejosh
1
С другой стороны, если я включу кэширование базовых блоков, Drupal будет устанавливать одинаковые условия кэширования для всех моих блоков на всем моем сайте, верно? Так как Core Drupal Block Caching имеет высокий приоритет над настройками кэширования блоков Views? Это кажется хорошим сценарием, если у вас нет контента, который может нуждаться в постоянном обновлении.
Дэвид Чсонка
4

Представления используют API-интерфейсы кеша Drupal, но создают собственный кеш, который не связан с обычным кешем страниц / блоков Drupal.

Представления кэшируют само определение представления вместе с самим отображаемым представлением. Представленное представление может быть кэшировано двумя способами: либо результат запроса, либо фактический HTML представления. Обычно вы хотите кэшировать выводимый HTML, так как это наиболее эффективно с точки зрения производительности. В некоторых случаях, когда вы хотите изменить вывод на основе зарегистрированного пользователя, кэширование запроса также может быть достаточно эффективным.

Таблицы Views использует для хранения кеша:

  • cache_views
  • cache_views_data
googletorp
источник
Итак, можно ли отключить настройку кэширования Drupal Core Block в admin / config / development / performance, но включить отдельные кэши блоков отображения видов по отдельности, и при этом все еще работают эти кэши блоков видов должным образом?
Дэвид Чсонка
1
@DavidCsonka Да, вы можете сделать это. Кэширование блока будет более эффективным, чем кэширование представления, но только с небольшим запасом.
googletorp
Ах, это приятно знать. Но использование только настроек кэширования Views позволило бы мне более точно контролировать, как кэшируется блок Views, верно? Если я вместо этого использую Базовое Кэширование Блоков, это налагает один набор настроек кэширования на каждый блок на моем сайте? Правильный?
Дэвид Чсонка
1
Кэширование представлений (блок или страница) позволяет контролировать кеширование списка результатов. Кэширование блоков - это почти полный вывод блоков. Да, базовое кеширование блоков - это настройка для всего сайта, но вы можете использовать Block Cache Alter, чтобы изменять это очень детально для каждого блока.
doublejosh
3
@doublejosh В Drupal 7 вы можете определить, как должен работать кеш блоков для всего сайта, для каждой роли, для каждой страницы, для каждого пользователя страницы. Так как это кэширование на более высоком уровне, оно более эффективно.
googletorp
3

В настоящее время доступен интересный модуль под названием Bully cache cache, который автоматически кэширует все представления (результаты запросов и выходные данные), за исключением представлений с открытыми формами. Модуль также позволяет вручную исключать представления из его кэширования. Это позволяет установить кэширование для всех представлений (кроме исключенных) из центральной точки.

Дэйв Брунс
источник
2

Drupal 7 обеспечивает кэширование страниц, однако кэширование страниц работает только для анонимных пользователей и не кэширует представления

Однако кэширование представлений работает как для анонимных, так и для зарегистрированных пользователей.

Гай Шнеерсон
источник