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

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

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

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

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

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

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

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

# 1. О том как заменить стандартную иконку (Throbber) в Drupal 8 (понедельник, ноября 9, 2020 - 23:23 ),

Для замены стандартной иконки загрузки (Throbber) в Drupal 8 необходимо добавить следующий js код:

читать...
# 2. SetHandler none Drupal_Security...... (вторник, октября 6, 2020 - 23:26 ),
Долго пришлось искать проблему не отображения файлов для которых созданы стили в Drupal 8. читать...
# 3. Temporary file '*****.tmp' could not be created (суббота, сентября 26, 2020 - 19:37 ),

Если в последних версиях Drupal 8 появилась ошибка "Temporary file '*****.tmp' could not be created"

необходимо добавить в  файл \sites\default\settings.php  строку

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

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

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

Комментарии

Необходимо добавить файл 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%!