Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:当数据通过管理面板更改时自动使缓存无效?_Django_Caching - Fatal编程技术网

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

Django:当数据通过管理面板更改时自动使缓存无效?,django,caching,Django,Caching,今天有一大堆关于Django的问题 缓存框架看起来非常棒,我想在站点范围内使用它。与其为我的视图设置一个明确的过期时间,我更愿意无限期地缓存它们,并且只在内容更改时使缓存失效/删除缓存。梦幻场景,对吧 是否有某种方法可以连接到Django的自动管理,以便在发生CRUD操作时删除相关缓存?我希望我必须以某种方式告诉管理面板哪个模型应该使哪个类无效,但原则上,这是可能的吗?我可以添加一些回调吗?还有别的选择吗 谢谢! 马特两部分回答: 清除CRUD事件上的缓存?简单易用 是否仅清除缓存的相关部分?这

今天有一大堆关于Django的问题

缓存框架看起来非常棒,我想在站点范围内使用它。与其为我的视图设置一个明确的过期时间,我更愿意无限期地缓存它们,并且只在内容更改时使缓存失效/删除缓存。梦幻场景,对吧

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

谢谢! 马特

两部分回答:

  • 清除CRUD事件上的缓存?简单易用

  • 是否仅清除缓存的相关部分?这是一个真正困难的问题。从表面上看,它可能看起来很简单,但除了最琐碎的情况外,很难识别所有的依赖关系

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


    总而言之,我认为这是另一种情况,而且根本不清楚它是否有任何区别。下一次,我将等到出现经验证的、可测量的性能问题后再执行类似操作。

    很有趣,感谢您提供的链接。你可能是对的——我怀疑我在页面呈现中看到的缓慢可能是因为我不知道Django在SQL方面是如何运行的。我将为许多人重新查阅这些文档,看看我是否可以做得更好。我有一种感觉,我在某些地方以
    n+1
    的数量运行查询。上面的补充:刚刚安装的django_debug_工具栏:我的主页目前正在进行409次查询。是时候读一读优化很多。。。