Как очистить кэш Twig для конкретного поддомена или хотя бы целиком?

Главные вкладки

Аватар пользователя mikel mikel 16 ноября 2018 в 9:26

Добрый день

Сделал сайт с региональными алиасами (msk.mysite.ru, spb.mysite.ru, omsk.mysite.ru и т д )
Т е содержимое сайта везде одно и то же, отличаются только некоторые параметры (адрес, телефон, карта).

Возникла проблема с кэшированием twig, т к он кэшируется для всего сервера, независимо от адреса сайта.
Например, зашли на msk.mysite.ru, там, как и ожидается, написано "Оказываем услуги в Москве", зашли на omsk.mysite.ru, а там снова "Оказываем услуги в Москве". Почистил кэш, в Омске, как и требуется, "Оказываем услуги в Омске" отображается, но теперь на московском домене "Оказываем услуги в Омске" вылезает.

В админке "Browser and proxy cache maximum age" стоит "не кэшировать".

Что еще можно сделать и как лучше поступить в этой ситуации?

Лучший ответ

Аватар пользователя gun_dose gun_dose 16 ноября 2018 в 16:10

А в $viables['page'] есть #cache?
Где-то нужно добавить

<?php
'#cache' => ['contexts' => ['url']]
?>

Комментарии

Аватар пользователя gun_dose gun_dose 16 ноября 2018 в 9:44

Это больше похоже на кэш рендера, чем на кэш твига. Скорее всего где-то неверный набор тэгов кэширования. Вот эта ваша надпись "Оказываем услуги там-то" чем вообще выводится?

Аватар пользователя mikel mikel 16 ноября 2018 в 13:18

Примерно так

<?php
function theme_preprocess_page {
   
//...
    //...
    
$variables["city"] = $city;
}
?>

Ну а в шаблоне Twig

Оказываем услуги в {{ city }}
Аватар пользователя gun_dose gun_dose 16 ноября 2018 в 13:59
1

Это точно кэш рендера. Как у вас вычисляется переменная $city? Выводится ли это на внутренних страницах? Если сбросить весь кэш, и зайти на главную страницу одного города и внутреннюю другого, то там город один и тот же?

Аватар пользователя mikel mikel 16 ноября 2018 в 14:52

Внутренних странниц нет, это лэндинг. Но могу создать для теста.
Регионы у меня термины таксономии с полями

<?php
   $terms 
= \Drupal::entityManager()->getStorage('taxonomy_term')->loadByProperties($properties);
    
$term reset($terms);
$city $term->get('field_city')->getValue();
?>

Получаю термин таксономии,