1

我正在使用 Django CACHEOPS。 cacheops 的自述文件

在 settings.py 如何为不同的查询集配置不同的超时?

(将get查询集缓存 10 秒,缓存queryset fetches60 秒)

像这样的东西:(这显然有重复键错误)

CACHEOPS = {
    'blog.Article': {'ops': 'fetch', 'timeout': 60},
    'blog.Article': {'ops': 'get', 'timeout': 10},
}

我的目标是:我想缓存每篇文章详细信息页面比文章列表页面更长的时间。

4

1 回答 1

0

如您所见,CACHEOPS定义中的一个键是针对模型的,而不是针对查询集的

blog.Article是应用程序中的Article模型blog,而不是查询集。

然后知道上面你只有解决方法来解决缓存中的故障,这将是

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},
}

而是使用装饰器来覆盖get特定模型的特定内容:

from cacheops import cached_as
@cached_as(Article, timeout=10)
def get_cached_article(...
     Article.objects. ... your queryset
     ...
于 2021-08-25T14:03:41.543 回答