Django cache_page检查

时间:2009-11-23 22:35:38

标签: python django caching

当我像这样使用cache_page装饰器时,如何确认我的Django视图被缓存:

@cache_page(60)
def my_view(request):

理想情况下,我想在控制台中输出缓存命中/未命中消息,这样我就可以确认我的视图被缓存了60秒等。

非常感谢, 克

3 个答案:

答案 0 :(得分:5)

可以抓取django-debug-toolbarhttp://github.com/robhudson/django-debug-toolbar)的副本并观看查询:如果页面未从缓存中提取,django-debug-toolbar应该显示汇编页面所需的所有查询。如果从缓存中提取页面,您将看不到查询。

您还可以将日志记录添加到您正在使用的特定缓存包装器中,然后在django-debug-toolbar的“日志记录”面板中引用输出。下面是一个例子:http://gist.github.com/242011

如果您有兴趣详细监控内存缓存使用情况,我还建议您抓取django-memcache-statushttp://github.com/bartTC/django-memcache-status)和memcache-tophttp://code.google.com/p/memcache-top/)的副本。

答案 1 :(得分:1)

根据您使用的缓存中间件,您可以检查该类的process_request方法,并找到类似这样的行(取自django/middleware/cache.py

131  response = cache.get(cache_key, None)
132  if response is None:
133      ...

...      logging.debug("Cache miss")
...
...  else:
...      logging.debug("Cache hit")

并从那里记录消息。我承认,这不是一种 clean 方式。

答案 2 :(得分:1)

您可以通过查看HTTP响应中的标题来确认您的页面已被缓存。

import json

with open("data.json") as f:
    data = json.load(f)

print(data)

$ curl -v http://localhost:8000/cached_view/ >/dev/null [...] < Cache-Control: max-age=900 < Expires: Tue, 02 Jul 2019 18:36:34 GMT [...] Cache-Control都意味着在生成响应时涉及到缓存。