Какие события вызываются при очистке кэша modx ?
События, касающиеся кэша:
OnBeforeCacheUpdate
OnBeforeSaveWebPageCache
OnCacheUpdate
OnSiteRefresh
OnLoadWebPageCache
При ручном обновлении сайта («Сайт» — «Обновить сайт») вызываются следующие кэш-зависимые события:
OnBeforeCacheUpdate
OnSiteRefresh
При загрузке страницы:
OnBeforeSaveWebPageCache
OnCacheUpdate
При программном вызове метода modxCacheManager->clearCache() никакие кэш-зависимые события не вызываются.
При сохранении элемента (при установленной галке «Очистить кэш при сохранении») тоже никакие кэш-зависимые события не вызываются.
Тогда как отследить момент «после очистки кэша»?
OnBeforeCacheUpdate
OnBeforeSaveWebPageCache
OnCacheUpdate
OnSiteRefresh
OnLoadWebPageCache
При ручном обновлении сайта («Сайт» — «Обновить сайт») вызываются следующие кэш-зависимые события:
OnBeforeCacheUpdate
OnSiteRefresh
При загрузке страницы:
OnBeforeSaveWebPageCache
OnCacheUpdate
При программном вызове метода modxCacheManager->clearCache() никакие кэш-зависимые события не вызываются.
При сохранении элемента (при установленной галке «Очистить кэш при сохранении») тоже никакие кэш-зависимые события не вызываются.
Тогда как отследить момент «после очистки кэша»?
Комментарии: 2
В методе modCacheManager::clearCache() вполне себе есть вызов события OnCacheUpdate.
Другой вопрос в том, что он вроде как deprecated, а в рекомендуемом refresh() такого события нет.
Другой вопрос в том, что он вроде как deprecated, а в рекомендуемом refresh() такого события нет.
Да, действительно, OnCacheUpdate вызывается. Только вот это событие при ручном обновлении сайта не вызывается. Всегда думал, что обновление сайта это и есть вызов modCacheManager::clearCache(). Как оказалось, при обновлении сайта этот метод вообще не вызывается.
В любом случае, нет пересекающихся событий, генерируемых и при ручном обновлении сайта, и при вызове modCacheManager::clearCache(). Плюс событие OnCacheUpdate — deprecated.
К тому же при очистке кэша в момент сохранения элемента (при установленной галке «Очистить кэш при сохранении») не генерируется никаких событий, связанных с кэшем.
Т.е. единственный вариант решения сабжевой задачи — частное решение. Т.е. вызываем «обработчик» события «после очистки кэша»:
а) в обработчике OnSiteRefresh
б) везде в коде после вызова modCacheManager::clearCache()
в) во всех обработчиках «после сохранения элемента», если установлена галка «Очистить кэш при сохранении»
В любом случае, нет пересекающихся событий, генерируемых и при ручном обновлении сайта, и при вызове modCacheManager::clearCache(). Плюс событие OnCacheUpdate — deprecated.
К тому же при очистке кэша в момент сохранения элемента (при установленной галке «Очистить кэш при сохранении») не генерируется никаких событий, связанных с кэшем.
Т.е. единственный вариант решения сабжевой задачи — частное решение. Т.е. вызываем «обработчик» события «после очистки кэша»:
а) в обработчике OnSiteRefresh
б) везде в коде после вызова modCacheManager::clearCache()
в) во всех обработчиках «после сохранения элемента», если установлена галка «Очистить кэш при сохранении»
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.