Django: автоматически аннулировать кеш при изменении данных через панель администратора? - PullRequest
7 голосов
/ 30 апреля 2011

Сегодня обсуждаются вопросы с Django.

Фреймворк кэширования выглядит довольно круто, и я бы хотел использовать его по всему миру.Вместо того, чтобы устанавливать явное время истечения для моих представлений, я бы предпочел кэшировать их на неопределенный срок и аннулировать / удалять кеш только при изменении содержимого.Сценарий мечты, верно?

Есть ли способ подключиться к автоматическому администратору Django, чтобы при выполнении операции CRUD соответствующий кэш удалялся?Я ожидаю, что мне придется как-то сказать админ-панели, какая модель должна сделать недействительным какой класс, но в принципе это возможно?Какой-то обратный звонок я могу добавить?Любые альтернативы?

спасибо!Matt

1 Ответ

6 голосов
/ 30 апреля 2011

Ответ из двух частей:

  1. Очистить кеш на событии CRUD? Easy as pie - используйте сигналы Джанго .

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

Мы решили часть 2, расширив кеширующий код django для встраивания информации о классе / идентификаторе объекта в имя, а затем кешируя на уровне подстраницы. В случае события CRUD мы могли бы выполнить регулярное выражение для кэшированных имен элементов и при необходимости удалить их.

В целом, я думаю, что это был еще один случай Преждевременная оптимизация , и не совсем ясно, что это имело какое-то значение. В следующий раз я подожду, пока не появится проверенная, измеримая проблема производительности, прежде чем делать что-то подобное.

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