Drupal 8. Как отключить кэширование отдельных страниц.

Опубликовано admin - пт, 09/20/2019 - 14:35

Не знаю как Вы, но я потратил несколько часов чтобы отключить кэширование страниц самописного модуля.

Одним из вариантов, к примеру, использовать файл module.routing.yml

Отключить кэширование для определённого типа можно следующим образом:

Также отключить кэширование можно через класс контролера.

Надеюсь кому-то поможет!

Взаимосвязанные материалы

# 1. Как правильно кэшировать хлебные крошки в Drupal 8 (среда, января 29, 2020 - 14:12 ),

Несколько раз сталкивался с тем что последний элемент Breadcrumb кэшировался на страницах с типом "node", несмотря на то, что страница менялась. То же самое наблюдалось и с view. читать...

# 2. Drupal 8. Несколько способов вывода информации черех Ajax (понедельник, января 27, 2020 - 23:23 ),
О том, как осуществить вывод информации с использованием ajax в Drupal 8. В Drupal 8 имеется несколько методов вывода информации через ajax - c применением методов Api и с использованием стандартных функций jQuery. При этом jQuery в Drupal 8 установлена по умолчанию. читать...
# 3. Маленькая заметка по Drupal, как получить изображение установленное по умолчанию (пятница, ноября 15, 2019 - 10:54 ),

Маленькая заметка по Drupal 8. Как получить изображение установленное по умолчанию:

читать...
# 4. Drupal 8. Шаг за шагом как создать модуль с отображением в admin панели (суббота, сентября 28, 2019 - 22:12 ),
Часто требуется не только создать модуль с функциональностью на страницах сайта, но и предоставить возможность конфигурировать настройки модуля в администраторском разделе. читать...
# 5. 15 лучших модулей в Drupal 8 (среда, сентября 25, 2019 - 16:11 ),

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

читать...

Комментарии

Необходимо добавить файл development.services.yml следующего содержания:

# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# 'example.settings.local.php' file, which sits next to this file.
parameters:
  http.response.debug_cacheability_headers: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

После этого добавить в sites/default/settings.php

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

Далее открыть settings.local.php и указать:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

Подробно об этом написано в "Disable Drupal 8 caching during development"

Не забудьте расскомментировать настройку в файле sites/default/settings.local.php:

/**
 * Disable the render cache (this includes the page cache).
 *
 * Note: you should test with the render cache enabled, to ensure the correct
 * cacheability metadata is present. However, in the early stages of
 * development, you may want to disable it.
 *
 * This setting disables the render cache by using the Null cache back-end
 * defined by the development.services.yml file above.
 *
 * Do not use this setting until after the site is installed.
 */
$settings['cache']['bins']['render'] = 'cache.backend.null';

Иначе может не работать.

На разработку сайта! Скидки до 20%!