【问题标题】:accurate page view count in DjangoDjango 中的准确页面浏览量
【发布时间】:2009-05-10 07:36:41
【问题描述】:

有什么好的方法可以准确统计页面的浏览次数?

我正在使用 Django。具体来说,我不想刷新页面以增加计数。

【问题讨论】:

    标签: django visitor-statistic


    【解决方案1】:

    据我所知,目前没有浏览器向服务器发送任何类型的消息/标头,说明请求是否来自刷新。

    我可以看到不计算用户刷新页面的唯一方法是跟踪用户查看页面的 IP 和时间,然后如果用户最后一次查看页面不到 30 分钟前,比如说,你会将其视为刷新并增加页面浏览次数。

    IMO 大多数页面刷新应该无论如何都算作一次页面浏览,因为我刷新的唯一原因是查看可能已添加的新数据,或者偶尔意外刷新/重新加载之后浏览器崩溃(上述方法会关闭)。

    【讨论】:

    • 跟踪 IP 是个坏主意。许多网络为其用户提供相同的外部 IP。
    • 是的,其他一些跟踪唯一用户的方法会更好(cookies、IP+用户代理),但我们的想法是消除您认为(因为您无法可靠地知道)的页面浏览量来自用户刷新页面。
    【解决方案2】:

    您可以为每个用户提供在一天结束时到期的 cookie,其中包含一个唯一编号。如果他重新加载了一个页面,你可以检查她当天是否已经被计算在内。

    【讨论】:

      【解决方案3】:

      您可以创建一个包含页面的唯一访问者的表格,例如VisitorIP + X-Forwarded-For 内容、User-Agent 字符串以及某种 PageID。如果数据本身无关紧要,您可以从这些值创建一个 md5/sha1 哈希(当然除了 PageID 之外)。但请注意,此表会增长得非常快。

      我建议不要为此设置 cookie。它们的大小有限,并且用户访问的页面很多,您可能会达到该限制并使解决方案不可靠。此外,由于它变成了交互式内容,因此在客户端缓存此类页面变得更加困难(请参阅Cacheability)。

      【讨论】:

        【解决方案4】:

        您可以编写一个 django 中间件并捕获 request.url,然后设置一个带有 url / 访问列的表。注意并发更新的事务。 如果你有负载问题,你可以使用 memcached 和 incr 或添加函数并定期更新数据库表以避免事务锁。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多