代码之家  ›  专栏  ›  技术社区  ›  RibaldEddie

跟踪cookies是如何工作的?

  •  4
  • RibaldEddie  · 技术社区  · 15 年前

    我们正试图弄清楚常见的网络跟踪软件是如何工作的,比如谷歌分析。

    我们注意到,许多来自web的跟踪Javascript代码在访问者的系统上创建了多个cookie,通常是三个cookie——一个在一天结束时过期,一个在一周结束时过期,另一个在月底过期。

    我们的团队一直在争论为什么这种情况很普遍,我们一直在绞尽脑汁想弄清楚为什么会有人这样做。

    以这种方式创建跟踪cookie的优势是什么?您认为其他人是如何使用这些cookie的?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Demi    15 年前

    他们可能以这种方式使用cookie来确定访问域的频率。如果您访问了该网站,并且它注意到您仍然有到期日cookie,那么就您的访问频率而言,这是非常重要的。如果你所拥有的只是每周和每月一次,那么很明显,你至少有一天没有访问过该网站,而且是在一周内。

    没有规则说这是唯一的方法。可以使用单个cookie进行跟踪,并在服务器上存储统计信息。

        2
  •  3
  •   bbmud    15 年前

    非常有趣的问题。我认为这是解决问题的办法 hotel problem . 让我们从DB查询的角度看一下。如果向用户发送一个cookie(到期日为一年),则站点的每日访问次数如下:

    SELECT COUNT(DISTINCT CookieId) FROM Visits 
    WHERE VisitDate = '2009-01-01' AND SiteId = 548
    

    使用多cookie系统,您必须只存储每个站点每天发布的cookie数量,并在每次发送新cookie时增加该数量:

    SELECT NoOfVisits FROM Visits 
    WHERE VisitDate = '2009-01-01' AND SiteId = 548
    

    当每年发布数亿个cookie时,这是一个明显的性能优势。

        3
  •  1
  •   winden    15 年前

    在一天、一周和一个月内使用3个cookie意味着客户端在每次请求时向您发送3个cookie,从网络带宽和延迟的角度来看,这显然是不好的。

    所以,你应该有一个平衡的行为。。。如果您更关心数据库中的用户延迟而不是服务器cpu使用情况,请仅使用一个cookie;如果您更关心服务器cpu使用情况而不是用户延迟情况,请使用3 cookie方法。

    真正的解决方案是混合:只使用一个cookie,然后在每天结束时执行第一个查询,并将结果存储在单独的表或列中,这样您的stats接口只需查询单独的结果。