Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中准确的页面浏览量计数_Django_Visitor Statistic - Fatal编程技术网

Django中准确的页面浏览量计数

Django中准确的页面浏览量计数,django,visitor-statistic,Django,Visitor Statistic,保持页面被浏览次数的准确计数的好方法是什么 我用的是Django。具体来说,我不希望刷新页面以增加计数。据我所知,目前没有浏览器向服务器发送任何类型的消息/标题,说明请求是否来自刷新 我能看到的不计算刷新页面的用户的唯一方法是跟踪用户查看页面的IP和时间,然后如果用户上次查看页面的时间不到30分钟,比如说,您会将其视为刷新而不增加页面查看计数 在我看来,大多数页面刷新都应该算作页面视图,因为我刷新页面的唯一原因是看到可能已添加的新数据,或者在浏览器崩溃后偶尔意外刷新/重新加载(上述方法会忽略这些

保持页面被浏览次数的准确计数的好方法是什么


我用的是Django。具体来说,我不希望刷新页面以增加计数。

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

我能看到的不计算刷新页面的用户的唯一方法是跟踪用户查看页面的IP和时间,然后如果用户上次查看页面的时间不到30分钟,比如说,您会将其视为刷新而不增加页面查看计数


在我看来,大多数页面刷新都应该算作页面视图,因为我刷新页面的唯一原因是看到可能已添加的新数据,或者在浏览器崩溃后偶尔意外刷新/重新加载(上述方法会忽略这些数据)。

您可以给每个用户cookie,cookie在一天结束时过期,包含唯一数字的。如果他重新加载一个页面,你可以检查她当天是否已经被计数。

你可以创建一个包含页面唯一访问者的表,例如VisitorIP+X-Forwarded-For内容、用户代理字符串以及某种PageID。如果数据本身不相关,则可以从这些值创建md5/sha1散列(当然除了PageID)。但是请注意,此表的增长速度将非常快


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

您可以编写django中间件并捕获request.url,然后设置一个包含url/access列的表。当心并发更新的事务。
如果有加载问题,可以使用memcached with incr或add函数定期更新数据库表以避免事务锁定。

跟踪IP是个坏主意。许多网络为其用户提供相同的外部IP。是的,其他一些跟踪唯一用户的方法(cookies、IP+用户代理)会更好,但这样做的目的是消除用户刷新页面时产生的页面视图(您无法可靠地知道)。