Очитска кеша при создании материала (ноды)

Прислано: xmls

пн, 23/08/2010 - 19:25

Как очистить кеш при создании ноды?
Очень важный, на мой взгляд, момент. Странно, что нигде не обсуждали.
Есть городской портал, на котором анонимы размещают объявления. Так вот при минимальном времени жизни кеша минут хотя бы в 15 юзеры начинают нервничать, не видя своего объявления...

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано RxB в пн, 23/08/2010 - 19:33.

Все очень важные вопросы решаются десятком строк кода, по этому и не обсуждают


Опубликовано xmls в пн, 23/08/2010 - 19:39.

Хорошо, подскажите, как выполнить код в момент добавления ноды.
Подозреваю, что нужно использовать hook_nodeapi()


Опубликовано RxB в пн, 23/08/2010 - 19:44.

cache_clear_all()
профит


Опубликовано xmls в пн, 23/08/2010 - 19:49.

Это понятно. А как вызвать эту функцию именно в момент добавления матерала. Можно ли использовать хук hook_nodeapi(), не вынося его в отдельный модуль? Извиняюсь за незнание...
Другими словами, как вызвать hook_nodeapi()


Опубликовано Sinkora в пн, 23/08/2010 - 20:05.

"RxB" написал(а):

cache_clear_all()

Удалять весь кеш из-за одной публикации - все равно что покупать новый мобильник, всякий раз, когда на него позвонят...


Опубликовано Sinkora в пн, 23/08/2010 - 20:06.

"xmls" написал(а):

Как очистить кеш при создании ноды?

Кеш чего?


Опубликовано xmls в пн, 23/08/2010 - 20:06.

а какие таблицы рекомендуете очистить при добавлении ноды?


Опубликовано Sinkora в пн, 23/08/2010 - 20:07.

"xmls" написал(а):

Очень важный, на мой взгляд, момент. Странно, что нигде не обсуждали.

Я кеширование уже миллион раз обсуждал...


Опубликовано xxandeadxx в пн, 23/08/2010 - 20:09.

"RxB" написал(а):

cache_clear_all()
профит

http://api.drupal.ru/api/function/node_save посмотри последнюю строчку кода)


Опубликовано RxB в пн, 23/08/2010 - 20:19.

"xxandeadxx" написал(а):

http://api.drupal.ru/api/function/node_save посмотри последнюю строчку кода)

Смотрел))))))


Опубликовано Sinkora в пн, 23/08/2010 - 20:24.

"xxandeadxx" написал(а):

http://api.drupal.ru/api/function/node_save посмотри последнюю строчку кода)

Кстати, да.

Поэтому стандартное кеширование лучше отключать, и делать по своей стратегии))


Опубликовано xmls в пн, 23/08/2010 - 20:53.

Короче, написал такой модуль. Вроде справляется с задачей...

<?php
function mycache_nodeapi(&$node$op$a3 NULL$a4 NULL) {
  switch (
$op) {
    case 
'insert':
      
cache_clear_all('*''cache_views''*');
      
cache_clear_all('*''cache_views_data''*');      
      
cache_clear_all('*''cache_block''*');
      
cache_clear_all('*''cache_page''*');
      
cache_clear_all('*''cache_content''*');
      
cache_clear_all('*''cache''*');      
  }
}
?>


Опубликовано Xermit в вт, 24/08/2010 - 01:06.

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


Опубликовано Geldora в вт, 24/08/2010 - 06:32.

Эх, любители писать новые модули... Поиск по готовым модулям друпала решил бы ваши проблемы :)

Content Refresh модуль.


Новое на сайте