我使用Django CACHEOPS。cacheops的README
在settings.py中,我如何为不同的查询集配置不同的超时?
(缓存get
查询集10秒,缓存queryset fetches
查询集60秒)
像这样:(这显然有复制键错误)
CACHEOPS = {
'blog.Article': {'ops': 'fetch', 'timeout': 60},
'blog.Article': {'ops': 'get', 'timeout': 10},
}
我的目标是:我想缓存每篇文章的详细信息页比文章列表页长。
如您所见,CACHEOPS
定义中的键是用于模型的,而不是用于查询集的
blog.Article
是blog
应用中的Article
模型,不是查询集。
那么知道了上面的内容,你就只有解决缓存故障的办法了,那就是
CACHEOPS_DEFAULTS = {
'timeout': 60 # first level - a default
}
CACHEOPS = {
'blog.*': {'ops': 'fetch', 'timeout': 60}, # second level - a default per application
'blog.Article': {'ops': 'get', 'timeout': 10},
}
宁可使用decorator来覆盖特定模型上的特定get
:
from cacheops import cached_as
@cached_as(Article, timeout=10)
def get_cached_article(...
Article.objects. ... your queryset
...