今天就Django提问。
缓存框架看起来非常棒,我想在整个网站上使用它。我没有为我的视图设置明确的到期时间,而是希望无限期地缓存它们,并且只在内容更改时使缓存无效/删除。梦想的场景,对吧?
有没有办法挂钩Django的自动管理员,这样当CRUD操作发生时,相关的缓存会被删除?我希望我不得不以某种方式告诉管理面板哪个模型应该使哪个类无效,但原则上,这可能吗?我可以添加某种回调吗?任何替代方案?
谢谢! 马特
答案 0 :(得分:6)
两部分答案:
清除CRUD事件的缓存?像饼一样容易 - 使用Django signals。
仅清除 缓存的相关部分?这是一个真正难以解决的问题。从表面上看,它可能看起来很简单,但除了最微不足道的情况之外,除了最微不足道的情况之外,依赖性很难辨别。
我们通过扩展django缓存代码来解决第2部分,将对象类/ id信息嵌入到名称中,然后在子页面级别进行缓存。在CRUD事件中,我们可以通过缓存的项目名称进行简单的正则表达式,并根据需要进行修剪。
总而言之,我认为这是Premature Optimization的又一个案例,而且它一点也不清楚它有什么不同。下次我会等到有一个经过验证的,可测量的性能问题之后再做这样的事情。