【问题标题】:Django cache_page checkingDjango cache_page 检查
【发布时间】:2019-07-03 02:35:13
【问题描述】:

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

@cache_page(60)
def my_view(request):

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

非常感谢, g

【问题讨论】:

    标签: python django caching


    【解决方案1】:

    可以获取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/) 的副本。

    【讨论】:

    • 啊哈!这正是我想要的。谢谢。
    • 要点已失效,这就是为什么您应该在此处粘贴代码。
    【解决方案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-ControlExpires 都表示在生成响应时涉及缓存。

      【讨论】:

        猜你喜欢
        • 2020-04-21
        • 2021-04-22
        • 2021-10-26
        • 1970-01-01
        • 2021-05-20
        • 2017-08-28
        • 2013-09-01
        • 2015-05-24
        • 1970-01-01
        相关资源
        最近更新 更多