URL Shortener如何工作?[关闭]


87

我想知道URL Shortener的工作原理,例如他们如何从地址栏中提取文本并将其映射到正确的URL,然后重定向它。他们使用什么编程语言?他们如何维护映射历史?它们如何确保缩短的网址的唯一性?外行人如何在不访问URL的情况下取消映射?


64
只有3票?来吧,他想学习一些东西,更快地关闭它!
IAdapter 2011年

22
这是我所遇到的确切问题,我很失望地看到它已关闭。它不是模棱两可或不完整的-他的要求非常明确。
thumbtackthief

3
@bmargulies我认为问题不应该被关闭,这是非常有帮助的,甚至是答案,也认为有43票赞成并且您决定将其关闭..为什么?
阿姆鲁斯A

Answers:


38

Wiki是您的朋友

基本上,名称较短的网站将用作占位符,例如bit.ly。

然后,bit.ly生成供用户提供的密钥,该密钥是随机生成的,不再重复。使用35个字符选项和8个左右的值进行数学运算。那有很多可能的钥匙。如果url等于以前存在的密钥,我记得在某处读到它们也重用了密钥。

他们实际上并没有使用特定的编程语言,只是使用了简单的URL重定向,我相信可以使用HTML来完成。


哦,太酷了。非常感谢您
prap19'1

25
重定向不是使用HTML完成的,而是使用HTTP标头完成的。(取决于状态代码301或302)。
Yahel,2011年

好的,那会更有意义。感谢您的澄清。
丹尼尔·威尔逊,

他们必须使用Location标头进行重定向。
Jeevan Patil

25

URL缩短程序仅生成一个简短代码,将目标URL映射到该简短代码,然后提供新的URL。访问URL将以短代码为键执行数据库查找,然后将您重定向到目标URL。缩短的URL和目标URL之间没有算法关联,因此,如果不通过URL缩短器的系统,就无法“取消映射”它。

您可以使用任何编程语言和数据存储来实现。代码生成对于确保唯一性也很简单。如果您拥有递增的主整数键,则可以简单地将该键编码为base62并提供服务。由于代码本质上是增量代码,因此您永远不会发生冲突。


19

实际上,该过程非常简单:有一个脚本询问URL,生成一个随机字符串(并验证该字符串尚未使用),然后将两者放入某种数据库中。当您请求url时,另一个脚本会在数据库中查找随机字符串,如果找到该脚本,则会将您重定向到该站点。

当然,由于所需的功能(例如滥用预防,URL过滤,垃圾邮件阻止,URL验证等),这在生产中会变得更加复杂。但是这些实现起来非常简单。


语言无关紧要,几乎任何人都可以。


9
“并验证该字符串尚未使用”。这是最大的问题
Stewie 2014年

3
@Stewie:SELECT * FROM映射WHERE键= stringToCheck,并检查是否返回任何行?或您选择的数据库语言中的任何类似内容。老实说,这似乎是整个问题中最简单的部分。
David Liu

@Stewie或者他们可以使用HashMap进行映射<key, url>
roottraveller

@DavidLiu不需要继续生成和发出查询,直到它没有输出结果吗?随着数据大小的增加,检查的时间也会增加。在最坏的情况下,对您的数据库的查询数量将为n-1,其中n是“字符串”的数量;当您有100M弦时会发生什么?
Stewie

@Stewie完全是另一个问题,解决方案本身的原理存在问题。没错,再生问题最终将成为一个问题,但是同样,这就是为什么我说“验证字符串尚未使用”是解决方案的简单部分。有很多替代解决方案可以随机进行而不进行替换。
David Liu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.