【问题标题】:Better way to count total page views?计算总页面浏览量的更好方法?
【发布时间】:2012-03-30 07:49:03
【问题描述】:

我正在开发一个电子商务网站,其中包含大约 2000-3000 种产品(在不久的将来可能会增加)。所以我需要计算特定产品的总页面浏览量。

我知道这可以简单地通过在每次页面加载时更新一个 mysql 表来完成,但这不是正确的方法,因为有人再次按下重新加载按钮,页面浏览量就会上升。

所以我想以更好的方式做到这一点,所以总浏览量没有。有点接近独特/真实的。

我刚刚想出了一个想法,我可以通过 3 种方式做到这一点:\

1.使用 cookie 因此,如果我只是为每个产品存储 cookie,然后检查它以进行下一次唯一访问,那么它可以完成,但我认为这不是更好的方法,因为如果没有总 cookie 的增长,那么它将影响我在每个页面请求上的页面性能。

2.使用会话我可以使用会话来存储有关每个产品和访问者身份的数据,以便我可以跟踪它是唯一访问还是重复访问。但我认为会话数据大小也如果用户使用相同的会话访问更多和更多的产品,则增加。 那么使用 session 来达到这个目的好不好?

3.使用数据库我可以创建一个表page_views,然后通过检查上次访问之间的时间延迟并匹配IP地址和会话ID来更新计数数据。

所以请建议我使用哪种方法更好以及实现该方法的最佳方式。

我正在使用 PHP(Codeigniter 2.0.1)+Mysql

【问题讨论】:

  • 我会使用 cookie 以获得最准确的结果
  • 猜你只能依靠 IP + 时间延迟并将信息存储在 DB 上。对于我的电子商务网站,我使用这种方法。与 cookie 控制混合使用会很好,只是不要使用持久性 cookie ^^。但是,如果最终用户禁用了 cookie 怎么办?还是带有没有cookie管理的手机?如果项目很大,你可以查看谷歌的分析。
  • 难道不应该有一种巧妙的方法来做到这一点,例如 Google Analytics?
  • @danneth:你已经预料到我的编辑了,我现在也在考虑同样的事情。

标签: php mysql algorithm codeigniter


【解决方案1】:

我建议您创建一个新表来存储会话 ID 变量,以及假设 2 小时的过期时间。你可以在客户端服务器上用这个ID创建一个cookie,这样就不用重复使用MySQL查询了。

在我的 Intranet 中,我只在我的 web-hits 表中创建了一个 last_visitor_ip 列,并且我将最后一个 IP 存储在那里,因此不计算连续刷新。 :)

【讨论】:

    【解决方案2】:

    没有。 3 不是一个好主意,因为通常许多不同的用户可能看起来具有相同的 IP 地址(例如,如果他们来自大型组织)。我想不是。 1/2 是最好的方法(我将它们视为相同的解决方案,因为您通常会通过创建 cookie 来实现会话)。但是为什么要为每个页面创建一个 cookie?只需跟踪每个 cookie/会话的不同产品/页面浏览量。

    【讨论】:

    • 感谢关于 IP 地址的观点,我也在考虑这一点,但我只是忘了提及,无论如何,谢谢。但我正在为每个产品创建 cookie,以便我可以识别同一用户是不再访问相同的产品。如果我做错了什么,请建议我
    • 每个用户只需要一个cookie。只需在您的页面浏览量表中添加一个“会话 ID”列。这样您就可以避免为同一用户重复计算同一产品。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2015-03-24
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多