我应该如何存储用户代理数据?

时间:2010-12-20 00:17:00

标签: php user-agent visitor-statistic

当我们为访客检测这些项目时:

  • 浏览器名称
  • 浏览器版本
  • 操作系统名称
  • 操作系统版本
  • 屏幕分辨率
  • 屏幕深度
  • 启用Flash
  • ...

这些是否应该在单独的列中存储在数据库中,还是应该将它们全部存储为用户代理字符串,然后在应用程序中将其分解?

我应该使用varchar(255)这样做是为了安全吗还是这些项目有明确定义的数据类型?我使用MySQL和PHP

3 个答案:

答案 0 :(得分:2)

这实际上取决于您想要对信息做些什么。如果您计划将数据用于非常详细的统计信息,请使用单独的列,以便您可以运行详细查询,例如“为具有Internet Explorer 6的用户显示所有屏幕分辨率”等。

如果您不希望需要这样详细的统计信息,那么将用户代理字符串存储在一个字段中通常可以正常工作。

答案 1 :(得分:2)

您应该将每个项目存储在自己的列中。这样您就可以轻松查询和汇总数据。

在插入时解析一次很便宜。解析每个查询都非常昂贵。

答案 2 :(得分:1)

这些项目没有已定义的数据类型,因此您可以使用varchar(255)甚至更小的数据类型。最好将这些值添加到单独的字段中的数据库中,因为它对性能没有明显的影响+插入只执行一次,读取次数,所以为什么不分割一次,写入,而不是每次读取? :)