Примеры работы функции cache_clear_all().
Для очистки кэша страниц и блоков с истёкшим временем хранения, нужно вызвать ф-ю без аргументов:
cache_clear_all();
это равносильно:
cache_clear_all(NULL, 'cache_block');
cache_clear_all(NULL, 'cache_page');
null
говорит о том, что нужно удалять данные только с истёкшим сроком.
Таким образом, чтобы удалить все устаревшие данные из указанной таблицы, нужно вторым аргументом передать название таблицы:
cache_clear_all(NULL, 'cache_TABLE');
Удалить все данные из указанной таблицы, даже тех, срок которых не истёк:
cache_clear_all('*', 'cache_TABLE', TRUE);
Удалить данные, ID которых имеет определённый префикс, даже тех, срок которых ещё не истёк:
cache_clear_all('ID_PREFIX', 'cache_TABLE', TRUE);
Например можно удалить кэш страниц таксономии:
cache_clear_all('http://example.com/taxonomy/term/', 'cache_page', TRUE);
Чтобы удалить из кэша данные по ID, нужно первым аргументом передать идентификатор, а вторым название таблицы:
cache_clear_all('ID', 'cache_TABLE');
Например можно удалить кэш определённой страницы:
cache_clear_all('http://example.com/node/123', 'cache_page');
Очистить все кэши можно с помощью функции:
drupal_flush_all_caches();
По материалам An overview of Drupal's cache_clear_all uses.
Комментарии
Здравствуйте!
Что то нет комментариев на этой странице... надо бы исправить... шутка... а серьёзно, у меня вопрос:
Я так понял, что cron.php не очищает кеш?
То есть можно например в function hook_cron() { , своего модуля, добавить функцию - cache_clear_all()?
Или можно сделать страницу с php кодом и там вызывать эту функцию очистки, если её нужно вызывать в отличное время от вызова крона....
Я правильно мыслю... Поправьте меня пожалуйста.
У меня просто на сайте крон включен каждый час. А кеш буста не очищается. хотя для страниц html время жизни - 1 час. Помогает только в ручную под админом вызвать - очистить все кеши.
не правильно поняли
И правильно и не правильно:
он не очищает все таблицы, а только
Всё равно нужно вызвать - cache_clear_all(); - что все таблицы кеша очистить!
Сейчас гляну что boost очищает?
Наконец то с boost разобрался!
function boost_cron() - не срабатывает, если вызывать крон под анонимом с ключом. isset($_boost['base_dir']) - нет директории. Нашел в модуле код как установить директорию и добавил в mymodule_cron
Это для 7-ки. Думаю что для 6-ки что то подобное. Может кому пригодится.
Дописываю эту функцию в cron.php (копирую на сайт, чищу кеш), запускаю крон - размер таблиц кэша остается прежним =( Что делаю не так?
Ссылка на оригинальную статью не работает
исправил
Можно ли обновить в кеше boost отдельные страницы. Можно конечно открывать каждую из этих страниц, редактировать, сохранять. Но может есть вариант проще?
Добавить комментарий