Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Cache max-age

30/04/2020, by maria

Cache max-age = зависимости от времени

Cache max-age аналогичен HTTP-директиве max-age заголовка Cache-Control.

Почему?

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

Некоторые данные действительны только в течение ограниченного периода времени, в этом случае вы хотите указать соответствующий максимальный возраст. Однако в случае ядра Drupal 8 у нас нет данных, которые действительны только в течение ограниченного периода времени; мы обычно кешируем постоянно (см. ниже) и полностью полагаемся на теги кеша для аннулирования.

Какая?

Максимальный возраст кэша - это положительное целое число, выражающее количество секунд.

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

Примеры:

  • 60 означает кеширование в течение 60 секунд
  • 100 означает кеширование в течение 100 секунд
  • 0 означает кеширование на ноль секунд, т.е. не кешируется
  • \Drupal\Core\Cache\Cache::PERMANENT означает, что кешируется навсегда, то есть это будет только когда-либо аннулировано из-за тэгов кеша. (Другими словами: ∞ или бесконечные секунды.)

Поэтому, если вы, например, хотите предотвратить кэширование отрендеренного блока, вы должны указать для него max-age = 0.

Пример для большинства массивов рендеринга:

$build['#cache']['max-age'] = 0;

Пример в функции:

\Drupal::cache()->set('my_cache_item', $school_list, REQUEST_TIME + (86400));

Если вы хотите изменить max-age блока на 0, вы должны реализовать метод getCacheMaxAge.

Ограничения максимального возраста

К сожалению, max-age не работает для анонимных пользователей и модуля Page Cache ядра Drupal. Например, посмотрите эти проблемы:

Пока эти (и, возможно, другие) проблемы не будут решены, имейте в виду, что установка максимального возраста для массива рендеринга, включенного в страницу, недостаточна, чтобы анонимные пользователи увидели новую версию после истечения максимального срока. В то же время, предоставленный модуль Cache Control Override пытается смягчить проблемы. Вам также может повезти, установив пользовательский тег кэша на страницах с содержимым, зависящим от времени, и аннулируйте эти теги вручную с помощью hook_cron(). Удачи!

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.