2015-12-05 3 views
0

У меня есть веб-сайт работает на Drupal 7. У меня есть различные блоки, которые появляются по всему сайту и содержат:Drupal 7 Конфигурация Кэширование не работает

  • PHP код
  • Просмотров

Under Конфигурация -> Разработка обоих параметров кэширования не проверена:

  • Страницы кэша f или анонимных пользователей разнуздана
  • блоков кэша разнуздана

Все блоки, содержащие представления не кэшируются для прошедших проверку подлинности и анонимных пользователей (т.е. Каждый запрос страницы дает новые результаты в блоке). Все блоки, содержащие PHP-код, кэшируются для всех (например, каждое обновление страницы использует кэшированные данные и не выполняет код PHP). Единственный способ для этих блоков повторить код PHP - очистить кэш страниц.

Мои вопросы следующие:

  1. Почему блоки с кодом PHP загружается из кэша, когда параметры кэширования в конфигурации не отмечены?

  2. Что является наиболее эффективным способом отключения обналичивания всех блоков?

* Обратите внимание, что я не хочу использовать Javascript/jQuery/Ajax вместо PHP.

ответ

0

Хм, это может быть проблема с фильтром php, который (возможно, в некоторых старых версиях drupal 7, не знаю, происходит ли это также в более новых) имеет кеш, установленный в таблице filter_format. Вы можете иметь лучшее описание здесь: https://www.drupal.org/node/1424698#comment-8719155

Если это решит проблему, я бы на самом деле предлагают реализовать hook_filter_info_alter(): https://api.drupal.org/api/drupal/modules!filter!filter.api.php/function/hook_filter_info_alter/7 и для php_code фильтра установлен кэш ЛОЖЬ:

if (!empty($info['php_code'])) { 
$info['php_code']['cache'] = FALSE; 
} 
Смежные вопросы