Структура кэша Django - автоматическое удаление? - PullRequest
0 голосов
/ 14 сентября 2018

Я столкнулся со следующей проблемой и понятия не имею, почему.

Я использую инфраструктуру кеширования Django для кэширования части моего сайта.

Я установил время истечения 15 минут.

Иногда, когда я проверяю базу данных, в таблице кеша нет записей. Сначала я подозреваю, что Django удалит просроченный кеш в базе данных.

Но позже я могу обнаружить, что некоторые кэши с истекшим сроком хранения все еще существуют в таблице.

Я хочу спросить, как Django обрабатывает кеш в базе данных?

Django автоматически удаляет весь просроченный кеш в таблице?

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Как и когда очищается кеш, зависит от того, какой бэкэнд кеша вы используете. Как правило, кэш будет очищаться только периодически, когда количество элементов в нем превышает указанный предел (, в отличие от того, когда они истекли - Django не проверяет это до тех пор, пока вы не попытаетесь получить элемент из кеш).

Из документации о конфигурации кеша:

Бэкэнды кэша, которые реализуют свою собственную стратегию отбора (т. Е., Бэкэнды locmem, filesystem и database), будут учитывать следующие параметры:

MAX_ENTRIES: максимально допустимое количество записей в кэше до удаления старых значений. Этот аргумент по умолчанию равен 300.

CULL_FREQUENCY: доля записей, которые отбираются при достижении MAX_ENTRIES. Фактическое соотношение составляет 1 / CULL_FREQUENCY, поэтому установите CULL_FREQUENCY на 2, чтобы отбирать половину записей при достижении MAX_ENTRIES. Этот аргумент должен быть целым числом и по умолчанию равен 3.

Так, когда и как очищается ваш кеш, зависит от этих параметров. По умолчанию весь кэш не очищается - удаляется только часть записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...