Какие события вызываются при очистке кэша modx ?

События, касающиеся кэша:
OnBeforeCacheUpdate
OnBeforeSaveWebPageCache
OnCacheUpdate
OnSiteRefresh
OnLoadWebPageCache

При ручном обновлении сайта («Сайт» — «Обновить сайт») вызываются следующие кэш-зависимые события:
OnBeforeCacheUpdate
OnSiteRefresh


При загрузке страницы:
OnBeforeSaveWebPageCache
OnCacheUpdate


При программном вызове метода modxCacheManager->clearCache() никакие кэш-зависимые события не вызываются.
При сохранении элемента (при установленной галке «Очистить кэш при сохранении») тоже никакие кэш-зависимые события не вызываются.

Тогда как отследить момент «после очистки кэша»?
Cyrax_02
28 июня 2014, 08:22
modx.pro
1
2 005
0

Комментарии: 2

Василий Наумкин
29 июня 2014, 01:06
+2
В методе modCacheManager::clearCache() вполне себе есть вызов события OnCacheUpdate.

Другой вопрос в том, что он вроде как deprecated, а в рекомендуемом refresh() такого события нет.
    Cyrax_02
    29 июня 2014, 10:54
    0
    Да, действительно, OnCacheUpdate вызывается. Только вот это событие при ручном обновлении сайта не вызывается. Всегда думал, что обновление сайта это и есть вызов modCacheManager::clearCache(). Как оказалось, при обновлении сайта этот метод вообще не вызывается.

    В любом случае, нет пересекающихся событий, генерируемых и при ручном обновлении сайта, и при вызове modCacheManager::clearCache(). Плюс событие OnCacheUpdate — deprecated.
    К тому же при очистке кэша в момент сохранения элемента (при установленной галке «Очистить кэш при сохранении») не генерируется никаких событий, связанных с кэшем.

    Т.е. единственный вариант решения сабжевой задачи — частное решение. Т.е. вызываем «обработчик» события «после очистки кэша»:
    а) в обработчике OnSiteRefresh
    б) везде в коде после вызова modCacheManager::clearCache()
    в) во всех обработчиках «после сохранения элемента», если установлена галка «Очистить кэш при сохранении»
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2