【发布时间】:2015-10-16 09:51:52
【问题描述】:
我正在使用 sinatra 和 heroku 编写一个网站,我想找到一种方法来跟踪对我网站的每次访问。我看过实际的分析程序(例如google analytics)并选择不使用它们,因为我想自己学习如何做。
我对访问的定义:
当某人或某物(机器人)访问您的网站时,就会发生访问。它由一个或多个页面浏览量/点击量组成。一位访问者可以多次访问您的网站。
来源:http://www.opentracker.net/article/hits-or-pageviews
对于每次访问,我想跟踪:
- 访客IP地址
- 时间访问开始(页面已打开)
- 时间访问已结束(页面已关闭)
这个网站的访问频率不高,所以我想将每次访问记录在一个使用 activerecord 访问的 postgres 数据库中。 日志记录的工作方式是这样的:
- 用户访问页面
- 会话开始,
ip、mac_address、time和view_id登录Visit - 查看的每个页面都登录
PageView - 用户关闭页面
- 会话被清除,
time和view_id登录Visit
数据库格式
- 访问(表)
- ip(列,字符串)
- mac_address(列,字符串)
- view_id(列,整数)
- 时间(列、日期时间)
- 页面浏览量(表格)
- 页面(列,字符串)
- 时间(列、日期时间)
- view_id(列,整数)
示例迁移文件:
class Main < ActiveRecord::Migration
def change
create_table :visits do |item|
item.string :ip
item.string :mac_address
item.datetime :time
item.int :visit_id
end
create_table :pageviews do |item|
item.int :visit_id
item.string :page
item.datetime :time
end
end
【问题讨论】:
-
我认为未经他的许可,您将无法获得任何客户端 mac-add。
-
扩展上述内容:MAC 地址是 layer-2 construct(仅限),您在路由互联网上看不到它。
-
那么我可以向客户请求吗?还是我应该从问题中删除它?
-
您可以在 javascript 中获取客户端的 MAC 地址,如果他们正在运行 Windows 并允许您安装 ActiveX 控件,请检查此stackoverflow.com/questions/5074139/…
-
@authprivate 谢谢,我已将其添加到问题中。
标签: postgresql activerecord logging sinatra