2011-04-22 249 views
3

在我的网站上,用户可以在文本输入字段中插入超链接。然后,这个链接(一个字符串)存储在我的数据库中。超链接可以多久?

在MySQL上,包含超链接字符串的字段是TEXT类型,但我认为它对于此类信息来说太长了。此外,VARCHAR(255)有时候太短。

什么是最好的类型/长度来存储超链接?很高兴知道链接可以多久。

+0

当一个项目我工作面临着同样的问题,我们采取了一个两层的做法 - 限制4K,但在正常化URL并将URL记录的ID存储在其他表中。在我们的应用程序中,URL经常重复使用,所以规范化对我们来说是有意义的。 – 2011-04-22 23:58:10

+0

沿着标准化方法,您可以选择存储地址的bit.ly URL ...该API可在http://code.google.com/p/bitly-api/wiki/ApiDocumentation – 2011-04-23 00:05:00

+1

超链接是一种有意义的URL。许多网络服务器会高兴地接受16kB,但当然这样的事情完全是疯了。自己决定什么是理智的。网址意味着人类可读,可用和可存储。在我看来,超过60-80个字符的网址已经是一个令人讨厌的事情,但是使用超过100-120个字符(亚马逊,呃?)的URL的人完全是疯了,或者完全无知。问问你自己打算输入一个200字符的字符串,或者想象在手机上拼写一个300个字符的URL。所以如果你使用VARCHAR(255),你绝对是安全的。 – Damon 2011-04-23 00:24:30

回答

2

参见:What is the maximum length of a URL in different browsers?

你可以使用VARCHAR(2048)如果你想有一个下限。尽管在空间方面使用TEXT没有任何问题。在这两种情况下,它们只使用与文本一样多的空间加上几个字节来表示长度。详情请参阅Data Type Storage Requirements

至于你是否应该挑VARCHARTEXT看到:MySQL: Large VARCHAR vs. TEXT?

+0

哦......不知道文本使用的空间与文本一样多。这是错误的关于'int'的权利? – markzzz 2011-04-23 00:07:17

+0

那么,为什么存在varchar?使用TEXT将是相同的:) – markzzz 2011-04-23 00:11:21

+1

这是正确的,'INT'总是4个字节。对于'TEXT',它的长度加上2个字节。有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html。 – WhiteFang34 2011-04-23 00:13:02

1

HTTP没有指定URL的长度限制。但是,网络服务器和浏览器可能会有限制。

我想一些旧的IE版本只有大约250个字符的限制。

+0

然后它增加到略小于2K(见http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url)。 – 2011-04-22 23:55:40

2

超链接可以有多长时间没有限制。浏览器限制GET请求可以使用超链接发送的数据量,但实际链接本身可以有多长时间没有限制。

一个标准的TEXT字段可以很好的存储链接(你不会因使用该字段而不是VARCHAR(255)字段类型的性能命中,也不会使用额外的内存,所以真的没有理由不使用它)