Во-первых, я предложил Рану Бар-Зиксу поместить данные «не для кэширования» в отдельный блок и установить для этого блока значение BLOCK_NO_CACHE
, так как это простейшее решение.
Если это невозможно, вы можете отключить кеширование определенных страниц, но вопреки предложению из ссылки, которую вы разместили, я бы сделал это, предотвратив кэширование страницы в первую очередь (вместо удаления кеша). запись потом).
Для этого вы можете временно изменить настройку глобального кэша на странице, о которой идет речь:
// Disable caching for this request cycle
$GLOBALS['conf']['cache'] = FALSE;
То, куда вы поместите этот код, зависит от страниц, которые вы хотите исключить из кэширования:
- Если это пользовательский тип узла, полученный из вашего собственного модуля, вы должны поместить его в
hook_view
.
- Если вы хотите сделать это для типа узла, поступающего из других модулей, вы можете поместить его в операционную часть 'view' в реализации
hook_nodeapi()
.
** Это также будет работать для отдельных узлов, если вы добавите проверку идентификатора узла перед отключением кэша.
- Если вам нужно сделать это на основе путей, вы можете поместить его в реализацию
hook_init()
, проверяя путь (или псевдоним пути), чтобы решить, следует ли отключить кэширование или нет.
Должно быть очевидно, что сначала необходимо очистить кэши для любого из этих подходов, так как они зависят от предотвращения кэширования страницы вообще. Они не будут удалять уже выгруженную запись из кэша.