假设我有一个可以增强的开源 Web 服务器或代理,比如说 apache 或 squid。
有没有办法确定每个客户在网页上花费的时间?
HTTP当然是无状态的,所以它不是微不足道的,但也许有人对如何解决这个问题有想法?
使用 Apache 或 Squid,您几乎无法检测到用户在您的页面上花费的时间。
但是在您的网页上添加一些额外的糖,您可以:
它是免费的,并且有很多功能。
但是您还会邀请 Google 观看您网站的统计信息……(但这可能有助于他们决定您是否想购买 :-))
并非没有一些 javascript 不断地在客户端访问您的服务器,然后检查它何时停止(但当然假设用户启用了 javascript)。还有各种(丑陋的)方法可以检测用 javascript 关闭的窗口,但当然这些不会总是触发。例如。浏览器崩溃。
我有点想知道你为什么想要这个。如果一个人看网页 3 秒钟,被另一个选项卡/窗口分心但让您的页面打开 2 小时怎么办?你得到的答案是 2 小时,你(可能)想要的答案是 3 秒。
您可以计算从请求页面到请求下一页之间的时间,但是只有当用户一直停留在该页面上直到他请求下一页时,这才是正确的。即使那样,他可能仍然在原始页面上(例如,他在选项卡中打开了新页面),并且只有在他们确实浏览到另一个页面时才会起作用。
唯一确定的方法是每隔十秒左右使用 Javascript 从打开的页面 ping 服务器,只是说“我还在被阅读!”
我实际上已经看到了 javascript 分析包,它们不仅通过不时地 ping 服务器来跟踪您在页面上停留的时间,而且还准确地跟踪屏幕上的内容。通过测量浏览器窗口的大小以及文档的滚动位置,他们能够准确地确定每个元素在屏幕上的确切长度。通过跟踪鼠标的位置,可能也可以很好地猜测它们在看什么。我现在找不到链接,但这是一个简短的故事。如果您真的对人们在看什么以及持续多长时间感兴趣,您就可以做到。您可以跟踪的数量没有太大限制。
另外,只是一个想法,如果您不想过多地ping服务器,您可以将内容缓存在内存中,并且仅在您获得足够数量的数据时或在页面关闭之前发送到服务器。
这种指标实际上在几年前非常流行,在 PC 变得更强大和标签式浏览器变得流行之前,它变得更难以准确测量。过去这样做的标准方法是假设人们通常一次只加载一页,并且只使用服务器日志数据来确定页面浏览之间的时间。您的标准分析供应商,如 Omniture 和 Urchin(现在的 Google Analytics)会计算这一点。
通常,您设置跟踪 cookie 以便能够随着时间的推移识别特定的人/浏览器,但在短期内,您可以只使用 IP 地址/用户代理组合。
因此,基本上您只需处理日志数据并将页面浏览量之间的增量计算为该人在页面上的时间。您设置了一些规则(或您的分析供应商在幕后执行此操作),例如丢弃/截断超出某个截止时间(例如 10 分钟)的时间,您假设该人实际上并未阅读,而是在窗口/选项卡中打开页面。
这些数据完美吗?显然不是。但是你只需要足够“足够好”的数据来进行统计分析并得出一些结论。
它对于纵向分析(读者随时间的习惯)和网站上不同页面之间的定性比较仍然有用。(即在两篇 700 字的文章之间,如果一篇文章的平均阅读时间是另一篇文章的两倍,那么实际上阅读第一篇文章的人会更多。)当然,您的网站必须足够繁忙才能有足够的数据点丢弃所有“坏”异常数据点后,进行统计上的合理分析。
是的,您可以使用 Javascript 发送保持活动以改进数据。您可以在 document.onload 之后以给定的时间间隔进行轮询,或者在页面的某些部分上设置鼠标悬停事件。
另一种技术是使用 Javascript 将 onclick 事件添加到每个<a href>
点击您的服务器的事件。然后,您不仅知道何时有人单击链接以将其从您的站点中删除,而且真正复杂的“热点”分析着眼于这样一个事实,即如果有人单击页面下方 6 段的链接,那么他们一定已经阅读了那么远。