【问题标题】:Updating a hit counter when an image is accessed in Django在 Django 中访问图像时更新命中计数器
【发布时间】:2013-07-04 07:26:52
【问题描述】:

我正在对 Django 网站 (v1.4.1) 进行一些简单的分析。鉴于几乎每个服务器请求都会收集这些数据,我认为正确的方法是使用一个自定义中间件。

网站的一个重要指标是访问给定图像的频率。由于每个图像都是它自己的对象,我考虑过使用django-hitcount,但认为这对我想做的事情来说是不必要的。如果它被证明更容易,我可能会使用它。

我目前面临的难题是我不想查询数据库并为每个发生的 HttpRequest 查找给定对象。相反,我想等到成功响应(由 200 或其他值的 HttpResponse.status 表示),然后查询服务器并更新相应图像的命中字段。之所以访问图片路径的唯一途径是在process_request中,而访问状态码的唯一途径是在process_response中。

那么,我该怎么办?是否像创建一个可以保存路径的类变量然后在返回响应代码 200 后查找文件一样简单,还是我应该只使用 django-hitcount?

感谢您的帮助

【问题讨论】:

    标签: django django-middleware


    【解决方案1】:

    设置一个 cron 任务以定期解析您的 Apache/Nginx/whatever 访问日志,可能使用 pylogsparser 之类的东西。

    【讨论】:

      【解决方案2】:

      您可以使用 memcache 来存储计数器,然后定期将它们保存到数据库中。 memcache 有可能在值被持久化之前将其逐出,但这对您来说是可以接受的。

      本文提供了更多信息,并强调了使用托管内存缓存和分布在多个服务器上的密钥时出现的风险。 http://bjk5.com/post/36567537399/dangers-of-using-memcache-counters-for-a-b-tests

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 1970-01-01
        • 2013-07-19
        • 1970-01-01
        • 2015-03-07
        • 2021-10-26
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        相关资源
        最近更新 更多