[Решено] Сброс кэша при обновлении

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

Аватар пользователя Sevix Sevix 24 июля 2016 в 2:23

Всем доброго времени.
Нашел в сети код модуля, который (по идее) должен сбрасывать кэш ноды при ее обновлении.
Только вот не работает он нифига. Посмотрите, пожалуйста, опытным глазом, может ошибка какая есть в коде?

<?php
/**
 * Реализация hook_node_submit.
 */
function mymodule_node_submit($node$form, &$form_state)  {
    if (
$form_state['values']['clear_cache_for_this_page']===1) :
      
$url url('node/'$node->nid, array('absolute' => true));
      
cache_clear_all($url'cache_page');
      
drupal_set_message('Очищен кэш для страницы <em class="placeholder">'$node->title'</em>.');
    endif;
}

/**
 * Реализация hook_form_FORM_ID_alter.
 */
function mymodule_form_node_form_alter(&$form, &$form_state$form_id) {
  if (isset(
$form['#node_edit_form']) && $form['#node_edit_form'] === TRUE) {
    
$form['options']['clear_cache_for_this_page'] = array(
     
'#type' => 'checkbox',
     
'#title' => "Очистить кэш для этой ноды",
     
'#default_value' => 1,
     
'#access' => user_access('administer nodes') ? TRUE FALSE,
    );
  }
}
?>

Комментарии

Аватар пользователя bumble bumble 24 июля 2016 в 3:35
1

Код, в принципе, рабочий...

Что именно не сбрасывается?
По сценарию - чистится кеш страницы ('cache_page' - тот что выводит кешированные страницы анонимам), возможно Вам нужно чистить кеш полей или какой-либо кастомный сегмент в котором хранится кеш отображаемых элементов.

Вот тут хорошо расписано устройство кеша в Drupal.

Аватар пользователя Sevix Sevix 24 июля 2016 в 5:38

bumble wrote:

Что именно не сбрасывается?

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

Аватар пользователя bumble bumble 24 июля 2016 в 5:57
2

Проверил специально на тестовом сайте - страница кешируется для анонимов ('cache_page'). По сохранению, из БД кеш трется.

Повторюсь: возможно Вам нужно очищать не кеш страницы, а другой.
Может используется дополнительное кеширвоание - Entitycache, Display cache...
Может в качестве хранения используется не БД - Memcached, Boost и т.п.

Аватар пользователя Sevix Sevix 24 июля 2016 в 6:44

Действительно, попробовал на свежем друпале - все работает. Это в моей сборке, видимо, что то не так. Пересобрать нужно.
bumble, Спасибо!