当我像这样使用cache_page装饰器时,如何确认我的Django视图被缓存:
@cache_page(60)
def my_view(request):
理想情况下,我想在控制台中输出缓存命中/未命中消息,这样我就可以确认我的视图被缓存了60秒等。
非常感谢, 克
答案 0 :(得分:5)
你可以抓取django-debug-toolbar
(http://github.com/robhudson/django-debug-toolbar)的副本并观看查询:如果页面未从缓存中提取,django-debug-toolbar
应该显示汇编页面所需的所有查询。如果从缓存中提取页面,您将看不到查询。
您还可以将日志记录添加到您正在使用的特定缓存包装器中,然后在django-debug-toolbar
的“日志记录”面板中引用输出。下面是一个例子:http://gist.github.com/242011
如果您有兴趣详细监控内存缓存使用情况,我还建议您抓取django-memcache-status
(http://github.com/bartTC/django-memcache-status)和memcache-top
(http://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
都意味着在生成响应时涉及到缓存。