超链接可以多长?
Posted
技术标签:
【中文标题】超链接可以多长?【英文标题】:How long can a hyperlink be? 【发布时间】:2011-08-11 06:58:41 【问题描述】:在我的网站上,用户可以在文本输入字段中插入超链接。然后,这个链接(一个字符串)被存储在我的数据库中。
在 mysql 上,包含超链接字符串的字段是 TEXT
类型,但我认为它对于此类信息来说太长了。此外,VARCHAR(255)
有时太短。
存储超链接的最佳类型/长度是多少?很高兴知道链接可以有多长。
【问题讨论】:
当我正在做的一个项目面临同样的问题时,我们采用了两层方法——限制为 4K,但标准化 URL 并将 URL 记录的 ID 存储在其他表中.在我们的应用程序中,URL 经常重复,所以规范化对我们来说是有意义的。 按照规范化方法,您可以选择存储地址的 bit.ly URL...API 位于code.google.com/p/bitly-api/wiki/ApiDocumentation 超链接的限制是作为 URL 的意义所在。许多网络服务器会很乐意接受 16kB,但当然这样的事情完全是疯了。自己决定什么是理智的。 URL 应该是人类可读、可用和可记忆的。在我看来,拥有超过 60-80 个字符的 URL 已经很麻烦了,但是使用超过 100-120 个字符(亚马逊,嗯?)的 URL 的人是彻头彻尾的疯狂或完全无知。问问自己谁将输入一个 200 个字符的字符串,或者想象一下在电话上拼写一个 300 个字符的 URL。因此,如果您使用 VARCHAR(255) 绝对安全。 是的,我想我会放 varchar(255),并在服务器端检查字符串是否超过 255(否则我会删掉)。 255就够了:) 【参考方案1】:超链接的长度没有限制。浏览器限制了 GET 请求可以通过超链接发送的数据量,但对实际链接本身的长度没有限制。
标准的 TEXT 字段可以很好地存储链接(与 VARCHAR(255) 字段类型相比,使用该字段不会对性能造成影响,也不会使用额外的内存,所以真的没有理由不使用它。)
【讨论】:
【参考方案2】:见:What is the maximum length of a URL in different browsers?
如果你想要一个下限,你可以使用VARCHAR(2048)
。不过,就空间而言,使用TEXT
并没有错。在这两种情况下,它们只使用与文本一样多的空间加上几个字节来表示长度。详情请见Data Type Storage Requirements。
至于是否应该选择VARCHAR
或TEXT
,请参阅:MySQL: Large VARCHAR vs. TEXT?
【讨论】:
哦...不知道 Text 使用的空间与文本一样多。int
是假的,对吧?
还有,为什么存在varchar?使用 TEXT 将是相同的 :)
没错,INT
总是 4 个字节。对于TEXT
,它是长度加上 2 个字节。详情请见dev.mysql.com/doc/refman/5.0/en/storage-requirements.html。
至于为什么你可能想要VARCHAR
vs TEXT
见***.com/questions/2023481/mysql-large-varchar-vs-text【参考方案3】:
HTTP 对 URL 的长度没有任何限制。但是,网络服务器和浏览器可能会有所限制。
我猜一些旧的 IE 版本的限制只有大约 250 个字符。
【讨论】:
然后增加到略小于2K(见***.com/questions/417142/…)。以上是关于超链接可以多长?的主要内容,如果未能解决你的问题,请参考以下文章
java 解析html 提取超链接,然后将超链接存储到文本中