Nat*_*pos 102 url web-services bit.ly url-shortener short-url
TinyURL或Metamark等服务如何运作?
他们是否只是将微小的URL密钥与[虚拟?]网页相关联,该网页仅提供原始URL的"HTTP重定向"?或者它有更多的"魔力"吗?
[原创措辞]我经常使用网址缩短喜欢TinyURL的,METAMARK和其他服务,但我每次做的时候,我不知道这些服务是如何工作的.他们是否创建了一个新文件,该文件将重定向到另一个页面,或者他们是否使用子域?
Abe*_*bel 220
不,他们不使用文件.当您单击类似的链接时,HTTP请求将使用完整的URL发送到其服务器,如http://bit.ly/duSk8wK(链接到此问题).他们读取路径部分(这里duSk8wK),它映射到他们的数据库.在数据库中,他们找到描述(有时),您的名字(有时)和真实的URL.然后他们发出重定向,这是一个HTTP 302响应和标题中的目标URL.
这种直接重定向非常重要.如果您要使用文件或首先加载HTML然后重定向,浏览器会将TinyUrl添加到历史记录中,这不是您想要的.此外,重定向到的网站将看到引荐者(您最初来自的网站)作为TinyUrl链接所在的网站(即twitter.com,您自己的网站,无论链接在哪里).这同样重要,因此网站所有者可以看到人们来自哪里.如果加载重定向的页面,这也是行不通的.
PS:有更多类型的重定向.HTTP 301表示:重定向永久.如果发生这种情况,浏览器将不再请求bit.ly或TinyUrl网站,并且这些网站想要计算点击数.这就是使用HTTP 302的原因,这是一个临时重定向.浏览器每次都会询问TinyUrl.com或bit.ly,这样可以为您计算点击数(一些小网址服务提供此功能).
A S*_*edo 106
其他人已经回答了重定向的工作原理,但你也应该知道他们如何生成他们的小网址.你会错误地听到他们创建URL的哈希值,以便为缩短的URL生成唯一的代码.在大多数情况下,这是不正确的,它们不使用散列算法(您可能会发生冲突).
大多数流行的URL缩短服务只是在URL的数据库中获取ID,然后将其转换为Base 36 [a-z0-9](不区分大小写)或Base 62(区分大小写).
TinyURL数据库表的简化示例:
ID URL VisitCount
1 www.google.com 26
2 www.stackoverflow.com 2048
3 www.reddit.com 64
...
20103 www.digg.com 201
20104 www.4chan.com 20
Run Code Online (Sandbox Code Playgroud)
允许灵活路由的Web框架使得处理传入的URL非常容易(Ruby,ASP.NET MVC等).
因此,在您的网络服务器上,您可能有一个看起来像(伪代码)的路由操作:
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Run Code Online (Sandbox Code Playgroud)
将您域www.mytinyurl.com之后有任何文本的任何传入请求路由到您的关联方法RouteURL.它将URL中正斜杠后传入的文本提供给该方法.
所以,让我们说你要求:www.mytinyurl.com/fif
然后将"fif"传递给您的方法RouteURL(String UrlID).然后RouteURL将"FIF"转换为它的base10相当于20103和数据库请求将进行重定向到URL无论是ID 20103下保存(在这种情况下,www.digg.com).在重定向到正确的URL之前,您还需要将Digg的访问次数增加一次.
这是一个非常简单的例子,但你应该能够得到一般的想法.
作为@A Salcedo的扩展回答:
一些网址缩短服务(Tinyarro.ws)通过使用Unicode(UTF-8)对缩短网址中的字符进行编码而变得极端 - 在允许添加额外符号之前允许更多数量的网站.由于大多数UTF-8被接受使用(大多数浏览器处理的(IRI)RFC 3987)从62每个符号的站点碰到〜1,112,064.
从视角来看,可以编码1.2366863e + 12个带有2个符号的站点(1,112,064*1,112,064) - 在2009年11月,缩短的链接bit.ly被访问了2.1十亿次(大约在那个时候,bit.ly和TinyURL是使用最广泛的URL缩短服务.)这比仅仅2个符号中的约600倍小,因此对于所有URL缩短服务的整个持续时间,它应该持续另外20年,直到添加第三个符号.
| 归档时间: |
|
| 查看次数: |
60839 次 |
| 最近记录: |