如果您要在数据库中存储一个用户代理,您将容纳多大的用户代理?
我发现这篇technet文章建议将UA保持在200以下。它看起来不像HTTP规范中定义的,至少我没有发现。我的UA已经有149个字符了,而且似乎每一个版本的。net都会增加它。
我知道我可以解析出字符串并分解它,但我宁愿不这样做。
编辑 基于此博客,IE9将更改为发送短UA字符串。这是一个很好的改变。
如果您要在数据库中存储一个用户代理,您将容纳多大的用户代理?
我发现这篇technet文章建议将UA保持在200以下。它看起来不像HTTP规范中定义的,至少我没有发现。我的UA已经有149个字符了,而且似乎每一个版本的。net都会增加它。
我知道我可以解析出字符串并分解它,但我宁愿不这样做。
编辑 基于此博客,IE9将更改为发送短UA字符串。这是一个很好的改变。
当前回答
HTTP规范根本不限制头的长度。 然而,web服务器确实限制他们接受的头部大小,如果超过413实体太大抛出。
根据web服务器及其设置,这些限制从4KB到64KB不等(所有头文件的总和)。
其他回答
我会给你一个标准答案:
取你能想到的最大的值,翻倍,这就是答案。
由于它是用于数据库的目的,并且没有实际的限制,我将使用UserAgents表,UserAgentId为Int, UserAgentString为NVarChar(MAX),并在原始表上使用外键。
这个是257
Mozilla / 4.0 (compatible;MSIE 8.0;Windows NT 5.1;三叉戟/ 4.0;GTB6; .net CLR 1.1.4322;.net CLR 2.0.50727;.net CLR 3.0.04506.30; InfoPath.2;.net CLR 3.0.04506.648;OfficeLiveConnector.1.3; OfficeLivePatch.0.0;.net CLR 3.0.4506.2152;.net CLR 3.5.30729
这并不是一个用户代理可以达到多大的指示,因为有很多答案显示了他们遇到的边缘情况,但在http://www.useragentstring.com/pages/useragentstring.php?name=All上可以找到的最长的是250字节。
Mozilla / 4.0 (compatible;MSIE 8.0;Windows NT 6.1;三叉戟/ 4.0;SLCC2;.net CLR 2.0.50727;.net CLR 3.5.30729;.net CLR 3.0.30729;Media Center PC 6.0;媒体中心PC 5.0;SLCC1;OfficeLiveConnector.1.5;OfficeLivePatch.1.3;.NET4.0C;Lunascape 6.3。
我的看法是:
使用专用的表只存储UserAgents(规范化) 在相关表中,存储一个外键值,以指向UserAgent自动递增主键字段 将实际的UserAgent字符串存储在TEXT字段中,而不关心长度 有另一个唯一的二进制(32)(或64,或128取决于你的哈希长度)和哈希UserAgent
一些UA字符串可能会非常长。这样你就不用担心了。同时在INSERTer中强制最大长度以保持UA字符串在4KB以下。除非有人在用户代理中给你发邮件,否则它不应该超过这个长度。