检查Django的cache_page
我该如何确认我的Django视图在使用cache_page装饰器时确实被缓存了,像这样:
@cache_page(60)
def my_view(request):
理想情况下,我希望在控制台输出缓存命中/未命中的消息,这样我就可以确认我的视图被缓存了60秒等等。
非常感谢,
g3 个回答
2
根据你使用的缓存中间件,你可以查看那个类里的 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")
然后可以从那里记录一些信息。我承认,这种方法不是特别“干净”。
3
你可以通过查看HTTP响应中的头信息来确认你的页面是否被缓存了。
$ 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
和 Expires
表示在生成响应的时候,有使用缓存。
6
你可以下载一个叫做 django-debug-toolbar
的工具(链接在这里:http://github.com/robhudson/django-debug-toolbar),用来查看数据库查询。如果页面没有从缓存中获取,django-debug-toolbar
会显示出构建这个页面所需的所有查询。如果页面是从缓存中获取的,你就看不到这些查询了。
你还可以在你使用的缓存包装器中添加日志记录,然后在 django-debug-toolbar
的“日志”面板中查看输出。这里有个例子可以参考:http://gist.github.com/242011
如果你对详细监控 memcache 的使用情况感兴趣,我还推荐你下载 django-memcache-status
(链接在这里:http://github.com/bartTC/django-memcache-status)和 memcache-top
(链接在这里:http://code.google.com/p/memcache-top/)。