Кэш Django не аннулируется при изменении
Кэшированная страница должна быть аннулирована, когда что-то меняется на базовом ресурсе. Django реализует "site-wide" кэширование, и я использовал это руководство для настройки моей инфраструктуры кэширования (пока локально для тестирования).
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
CACHE_TTL = 60 * 60 * 1
CACHE_MIDDLEWARE_SECONDS = CACHE_TTL
Когда я запускаю свои тесты сейчас, это работает слишком хорошо, поскольку все тесты терпят неудачу, которые изменяют информацию в базе данных. Должен ли я вручную добавить флаг для аннулирования кэша? Должно ли это вообще работать (или мои настройки неверны)? Я видел этот вопрос, но в моем случае я не использую никаких декораторов, а только side wide caching. Тем не менее, я протестировал, используя vary_on_headers('Authorisation',), что не изменило результаты теста.
Согласно этой дискуссии на форумах Django, похоже, что автоматическое кэширование сайта на самом деле не предназначено для этого. Оно более или менее предназначено для кэширования страницы до истечения срока ее действия, а не до ее аннулирования, потому что нет способа аннулировать страницу вручную.
Всегда есть возможность использовать кэширование бэкенда вручную, хотя.