我正在尝试构建一种解决方案,以在不依赖Cookie和第三方的情况下监控我的网站访问。目前,通过监视访问日志,我可以获得足够且有用的信息,但是却错过了访问的时间(即检查人们是否真正阅读了我写的内容)。
用访问日志监视访问时间的好策略是什么? (我正在使用Nginx,但大概相同的想法对Apache也有效)
答案 0 :(得分:1)
如果还不是构建的一部分,则为Nginx安装Nchan websockets模块。
在Nginx服务器上配置websocket订户位置指令,并在其中指定nchan_subscribe_request
和nchan_unsubscribe_request
指令。
在页面加载时插入一行代码,以在页面加载时建立到Websocket位置的客户端连接。
就这样,完成了。
现在,当我访问您的页面时,我的浏览器将连接到您的Nginx / Nchan Websocket服务器。 Nginx会向您设置为nchan_subscribe_request
URL的任何地址发出内部请求,您可以在此请求的标题中传递我的IP或任何需要识别我的身份。将其记录在您的主日志(一个单独的日志)中,并将其传递到上游服务器,php,节点,创建数据库条目,将我的ip + timestamp保存在memcached中。
然后,当我离开站点时,我的websocket连接将断开,Nginx将执行相同的操作,但是改为使用nchan_unsubscribe_request
URL。现在,根据您在连接时所做的事情,您可以做任何事情来确定我在您的网站上花费了多长时间。
由于您现在已经与客户建立了持久的连接,因此可以更进一步,并包括一些代码以监视某些客户端行为或监视某些事件。
您正在尝试确定人们是否正在阅读您写的内容,因此您可以使用几行javascript来监视访问者滚动的页面的深度。每次他们滚动到新的最大滚动位置时,都会通过websocket将这些数据发送回您的服务器。
答案 1 :(得分:0)
由于HTTP的断开特性,您的访问日志可能无法满足您的需求。
对nginx或apache日志不是很熟悉,但是我认为大多数日志都包含时间戳,HTTP请求(请求的文档和状态等)和IP地址。
潜在问题