如何计算唯一访问者并在特定时间后重新计算?
Posted
技术标签:
【中文标题】如何计算唯一访问者并在特定时间后重新计算?【英文标题】:How to count unique visitors and recount after specific time? 【发布时间】:2013-01-01 09:16:24 【问题描述】:我有一个非常值得思考的问题,需要帮助,这是我应该遵循的最佳方法
注意
我说的是每天 10K 的点击次数
任务
-
没有使用过多的托管服务器资源
没有让我的网站加载缓慢
问题
我有一个网站,它会在每个独特的访问者到来时给一个分数。
如果该访客在上次访问后不到 12 小时内再次来访,那么他将不会被计算在内。 如果该访客在 12 小时后再次来访,他将被计为新访客,并将获得更多积分。现在,
有很多方法可以做到这一点,但对于流量巨大的网站来说,它们似乎不够好。
如果我在每次访问的数据库中记录 IP 和时间,并且如果该访问者再次访问,那么我将按 ip 和时间进行比较。要知道是新ip的新访问者还是12小时内或12小时后访问的旧访问者。
这可能需要时间并且会减慢整个网站的速度。
那么任何想法或策略如何做到这一点?
我一直在考虑Tracking unique visitors 的最佳答案Glenn Nelson,但在我的情况下,我需要每 12 小时重新计算一次访问者是唯一的。
【问题讨论】:
如何在数据库中记录用户访问?您是否在适当的列(IP 和访问时间)上有索引? 你考虑过使用Google analytics吗?它们提供了非常强大的跟踪数据。 @Srinivas ,我一直在考虑获取访问者 ip 和访问时间,然后将其保存在 db 表中,如果该访问者再次出现,将获取其 ip 并在存储在 db 中的新 IP 中进行比较如果不是,则计为 UV 然后将检查其上次访问时间是否超过 12 小时,然后将计为 UV 并更新其访问时间,但如果不是,则他不是 UV >>> 但是这可能会使我的网站如此缓慢,如果获得大量流量。 @Supericy 我的问题实际上很简单,但如果我找到了好的解决方案,我会将其应用于我的网站,访问者注册然后创建链接并获取他们链接的 UV,这样谷歌分析就赢了'帮不了我,因为我不仅需要知道我的网站静态数据。 @Jack Ben:我不知道您是在询问运行报告还是在每个页面点击的函数中使用此数据。运行报告与您网站的运营完全分开。即使偶尔在您的数据库上执行昂贵的查询以运行一些数字,也不应该影响您的网站。 【参考方案1】:您是否考虑过使用 cookie?您可能会使用:
set cookie expire time for 12 hrs.
if cookie_expired
give more points
else
renew cookie
只是一个简单的想法,我不完全确定它是否更快,但假设您有用户,无论如何您都需要一个 cookie。
【讨论】:
看起来又好又简单,但我不确定cookie是否是最好的解决方案~谢谢你的建议以上是关于如何计算唯一访问者并在特定时间后重新计算?的主要内容,如果未能解决你的问题,请参考以下文章
函数失败后我是不是应该重新调用 API 函数并在 c# 中刷新我的访问令牌?