我们正试图弄清楚常见的网络跟踪软件是如何运作的,例如Google Analytics。
我们注意到,来自网络的大量跟踪Javascript代码会在访问者的系统上创建多个Cookie,通常是三个Cookie - 一个在一天结束时到期,一个在一周结束时到期,以及一个在月底到期的。
我们的团队一直在辩论为什么这很常见,我们一直在撕扯头发,弄清楚为什么会这样做。
我们唯一能想到的就是性能:通过这种方式,您可以计算访问者是否每天,每周或每月重复,而无需始终对OLTP数据库进行大量查询。但无论如何,我们可以设想让它发挥作用的方法。
以这种方式创建跟踪cookie有什么好处,您认为他们如何被其他人使用?
答案 0 :(得分:4)
他们可能会以这种方式使用Cookie来确定访问域名的频率。如果您访问该网站并且它注意到您仍然有到期日期的cookie,那么就您的访问频率而言这是很重要的。如果您拥有的是每周和每月,那么很明显您至少有一天没有访问过该网站,并且持续一周内。
没有规则说这是执行此操作的唯一方法。可以使用单个cookie跟踪并在服务器上存储统计信息。
答案 1 :(得分:3)
非常有趣的问题。我认为这是hotel problem的解决方案。让我们从数据库查询的角度来看一看。如果向用户发送一个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时,这是一个明显的性能优势。
答案 2 :(得分:1)
每天,每周和每月使用3个cookie意味着客户端会在每个请求上向您发回3个cookie,从网络带宽和延迟的角度来看,这显然是不好的。
所以,您应该明确地采取平衡行为...如果您更关心用户延迟而不是数据库中的服务器CPU使用情况,则只使用一个cookie,如果您更关心服务器CPU使用情况,请使用3 cookie方法等待时间。
真正的解决方案是创建一个混合:只使用一个cookie,然后在每天结束时执行第一个查询并将结果存储在单独的表或列中,这样您的统计信息接口只需要查询单独的结果