【问题标题】:How should I store user agent data?我应该如何存储用户代理数据?
【发布时间】:2010-12-20 00:16:59
【问题描述】:
当我们为访问者检测到这些项目时:
- 浏览器名称
- 浏览器版本
- 操作系统名称
- 操作系统版本
- 屏幕分辨率
- 屏幕深度
- Flash 已启用
- ...
应该将这些都存储在数据库中的单独列中,还是应该将它们全部存储为用户代理字符串,然后在应用程序中分解?
为了安全起见,我应该使用varchar(255),还是这些项目有明确定义的数据类型?我使用 MySQL 和 PHP
【问题讨论】:
标签:
php
user-agent
visitor-statistic
【解决方案1】:
这真的取决于你想用这些信息做什么。如果您计划将数据用于非常详细的统计信息,请使用单独的列,以便您可以运行详细的查询,例如“为使用 Internet Explorer 6 的用户显示所有屏幕分辨率”等。
如果您不希望需要如此详细的统计信息,将用户代理字符串存储在一个字段中通常可以正常工作。
【解决方案2】:
您应该将每个项目存储在其自己的列中。这样您就可以轻松查询和汇总数据。
在插入时解析一次很便宜。解析每个查询非常昂贵。
【解决方案3】:
这些项目没有定义的数据类型,因此您可以使用varchar(255) 或更小。最好在单独的字段中将此值添加到数据库中,因为它对性能没有明显影响+插入完成一次,读取 - 更多次,那么为什么不拆分一次,在写入时,而不是在每次读取时? :)