Django:如何通过管理面板更改数据时自动使缓存失效?

问题描述 投票:0回答:1

缓存框架看起来非常棒,我想在整个站点使用它。我宁愿无限期地缓存它们,并且仅在内容更改时使缓存无效/删除,而不是为我的视图设置明确的到期时间。梦幻般的场景,对吧?

是否有某种方法可以连接到 Django 的自动管理,以便在发生 CRUD 操作时相关缓存被删除?我希望我必须以某种方式告诉管理面板哪个模型应该使哪个类无效,但原则上,这可能吗?我可以添加某种回调吗?有什么替代方案吗?

谢谢! 马特

django caching
1个回答
8
投票

分两部分回答:

  1. 清除 CRUD 事件的缓存?简单易行 — 使用 Django 信号

  2. 仅清除缓存的相关部分?这确实是一个难题。从表面上看,它可能看起来很简单,但除了最微不足道的情况外,所有依赖关系都很难辨别。

我们通过扩展 django 缓存代码将对象类/id 信息嵌入到名称中,然后在子页面级别进行缓存,解决了第 2 部分。在 CRUD 事件中,我们可以通过缓存的项目名称执行简单的正则表达式并根据需要进行修剪。

总而言之,我认为这是又一个“过早优化”的情况,而且目前还不清楚它是否有任何区别。下次我会等到出现经过验证的、可测量的性能问题后再做这样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.