【问题标题】:How to store URLs in a table?如何将 URL 存储在表中?
【发布时间】:2008-11-05 15:28:58
【问题描述】:

我认为字段类型应该是可变长度的字符串(VARCHAR),但是我应该使用什么长度呢?

澄清一下:我想选择一个能够存储 平均 URL 的大小,而不是真正关心最大可能。

【问题讨论】:

  • 有没有查询字符串? “?”之后的所有内容真的可以让网址变大。
  • 与。但是有多大?地址栏已经放不下 200 多个字符,你可以说它很大。
  • 通过 RFC——没有限制。但是,通过浏览器,存在限制。 “平均”很容易计算。获取一些样本数据。确保取平均值 + 2 个标准差以涵盖大多数种情况。

标签: database-design url


【解决方案1】:

对于 I.E.限制是2,083 Characters

似乎大多数其他浏览器没有这样的限制,但如果 URL 应该与所有浏览器兼容,我建议使用 2083 个字符。

【讨论】:

    【解决方案2】:

    虽然浏览器支持包含数千个字符的 URL,但这种情况很少见,而且您自己说过您希望能够存储平均 URL。您的字段长度取决于您期望的平均值。您是否主要存储“主页”(如在用户配置文件中)?或者是 URL 深层链接到具有长路径和/或查询字符串的站点上的内容 - 基本上是 any URL?

    如果是后者(任何 URL),则使用此问题的答案中提到的 2083 号码。但请记住,SQL Server 中的最大行大小约为 8000 字节。如果这与一堆其他信息(同样,例如用户个人资料)是同一个表,您可能会达到该限制。

    对于我自己的项目,通常会有更多关于将存储哪些 URL 的上下文。我通常会提出一个潜在 URL 的列表,并决定一个可以容纳所有这些的长度,然后将其加倍。我通常以 300 或 500 的 URL 字段长度结束,而且我不记得曾经遇到过问题。

    【讨论】:

      【解决方案3】:

      大小以适合 GET 请求的允许长度。说2048(这是IE的最大值) http://www.boutell.com/newfaq/misc/urllength.html

      附带说明,如果这些 URL 中的任何一个是 javascript 小书签;

      javascript:var foo='bar';...alert('Hello World');
      

      如果用户尝试将其添加到收藏夹中,IE 中的字符数限制为 508

      【讨论】:

        【解决方案4】:

        如果您想支持所有现代浏览器,您至少需要 190,000 的长度。 Click here了解详情。

        但是,我认为您可以使用 2000。如果客户输入的 URL 比这更长,您可以将错误归咎于他们,他们实际上会对这样做感到内疚。 :)

        【讨论】:

          【解决方案5】:

          这取决于 URL 本身。

          如果您使用像 http://dsddsadashf.fsdfs.fd/fsdfsdfs/dfsdfsdfdsf/ssssdfsdfsd/sdfsdfsdfsd?fsdfsdfsdf=fdfsfsdfs&fsdfsdfsdfsdfs;jsessionid=sdasdsadasdasdfsdvhbdkvhjkdvhsk 这样很长的 URL,您可能会考虑使用 CLOB 字段;)

          【讨论】:

            【解决方案6】:

            您应该使用文本,因为 varchar 可能只有 255 个字符长。文本长度可以是 65536 个字符。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-09-30
              • 2016-08-31
              • 2016-10-20
              • 1970-01-01
              • 2021-07-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多