问题标签 [django-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Django - 如何使按视图缓存无效?
我想使用per-view cache。我知道它是如何工作的,但问题出在哪里?如何使该缓存无效?每次更改数据库记录时,我都必须这样做。没有关于如何做到这一点的信息:/
django - Django:使变量持久化
基本上我想在 Django 中创建一个变量,但我不知道如何。
更准确地说,我希望用户在登录站点时选择一个特定的项目(例如通过 ChoiceField)。然后,只要他不选择另一个项目,站点就“知道”他选择了哪个项目,因此他可以执行与该项目相关的一些操作。
这怎么可能?会话变量是要走的路吗?或者也许是缓存系统?一些提示将不胜感激:)
如果我不够清楚,请告诉我
django - 在 Django 缓存中高效存储大表
我使用 Django 和 jqGrid 并通过 AJAX 加载页面。有时,查询非常复杂,页面加载速度非常慢,因为远页面要慢得多(这是意料之中的,结果通常超过 100k 个对象)。我认为结果缓存会解决这个问题,增加了第一页的加载时间,但随后强烈加速了后续页面的加载。
相反,它使第一页的加载速度非常慢,甚至后续页面也需要大量时间(在标准 PC 上为 11 秒)。我正在使用 locmem 缓存后端。有任何想法吗?为了进行比较,我尝试将结果存储在全局字典中,效果要好得多(后续页面只需 1 秒),但我听说这不是一种安全的方法。
有任何想法吗?
django - 哪个 Django 缓存系统更快:文件系统还是数据库?
我知道这两者之间不一定像 Memcached 和 DB/文件系统之间那样有明确的界限,但我想知道什么条件会导致文件系统比 DB 缓存更快。而且,相反,在什么情况下数据库缓存会比文件系统快?
django - Django 多个缓存后端
我想在一个 django 项目中使用多个缓存引擎。在示例中,我使用 sorl.thumbnail,它生成了许多 sql 查询来获取/设置模型图像的缩略图。为了缓存这个查询,我使用 memcached 后端。但是,其他缓存停止工作,我的意思是模板缓存{% cache ... %}
,以及通过 API cache.get()、cache.set()。我想成为这样的人
}
如何在模板中使用“基于文件”的缓存?因为 {% cache %} 使用 memcached 后端,它会产生很多查询,尤其是使用树(django-mptt)
django - 异步数据获取和缓存处理
我正计划部署一个动态站点,该站点需要在后台定期完成某些任务,比如说每隔一两个小时。我需要输出的数据完全取决于这些查询的结果。
现在,问题是这些任务需要一定的时间,例如 8-10 分钟:所以如果用户请求一个页面,因此某个视图被调用,而该任务仍在进行中,一切都会变糟。
所以,这里的问题是:我需要实现什么来处理这个问题?我一直在搜索,发现了有关 celery 的信息,但我不明白如何使用它来解决上述问题,并可能实现一个缓存系统,在任务尚未完成时进行干预。
django - 从满足给定条件的缓存中删除许多对象
我已经根据其他模型 Y 和用户 U 构建了模型 X。X 存储在 django-cache 中的键“X_Y.id_U.id”下。现在我想从缓存中删除所有绑定到 Y 的模型 X(对于所有用户)。我怎样才能做到这一点?
python - django querysets + memcached:最佳实践
试图了解在 django 低级 cache.set() 期间发生了什么特别是有关查询集的哪些部分存储在 memcached 中的详细信息。
首先,我是否正确解释了 django 文档?
- 查询集(python 对象)拥有/维护自己的缓存
- 对数据库的访问是惰性的;即使 queryset.count 是 1000,如果我为 1 条记录执行 object.get,那么对于 1 条记录,dbase 只会被访问一次。
- 当通过 apache prefork MPM 访问 django 视图时,每次特定守护程序实例 X 最终调用包含诸如“tournres_qset = TournamentResult.objects.all()”之类的特定视图时,这将导致每次都产生一个新的tournres_qset 对象被创建。也就是说,任何可能已经被前一次(tcp/ip)访问的 tournres_qset python 对象内部缓存的东西,根本不会被新请求的 tournres_qset 使用。
现在是关于在视图中将内容保存到 memcached 的问题。假设我在视图顶部添加了这样的内容:
在 cache.set() 期间存储了什么?
整个查询集(python 对象)是否被序列化并保存?
由于尚未使用查询集来获取任何记录,这是否只是浪费时间,因为实际上没有特定记录的内容保存在内存缓存中?(任何未来的请求都会从 memcache 中获取 queryset 对象,该对象将始终以空的本地查询集缓存重新开始;将始终访问 dbase。)
如果上述情况属实,那么我是否应该总是在视图末尾重新保存查询集,在整个视图中使用它来访问一些记录之后,这将导致查询集的本地缓存得到更新,并且应该总是被重新保存到memcached?但是,这总是会导致再次序列化查询集对象。这么多可以加快速度。
或者,cache.set() 是否强制 queryset 对象迭代并从 dbase 访问所有记录,这些记录也会保存在 memcache 中?即使视图只访问查询集的子集,一切都会被保存?
我看到了各个方向的陷阱,这让我认为我
误解了很多事情。
希望这是有道理的,并感谢对一些“标准”指南的澄清或指示。谢谢。
django - Django 低级缓存 API 不起作用
我正在尝试request.POST
使用低级缓存 API 缓存字典,但它似乎不起作用。我得到的不是缓存的字典,而是None
值。
这是我尝试过的:
设置:
运行代码时没有异常。
设置或unix有问题memcached.sock
吗?
django - 如何在 Django 中显式重置模板片段缓存?
我正在为我的 Django 应用程序使用 Memcache。
在 Django 中,开发人员可以使用模板片段缓存来仅缓存模板的一部分。https://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching
我想知道是否有办法在views.py中显式地更改模板片段缓存部分的值。例如,除了模板片段缓存之外,是否可以使用类似于 cache.set("sidebar", "new value") 的方法?
感谢您的帮助。