首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >短URL服务是如何工作的?

短URL服务是如何工作的?
EN

Stack Overflow用户
提问于 2009-10-13 19:20:09
回答 4查看 72.2K关注 0票数 114

TinyURLMetamark这样的服务是如何工作的?

它们只是简单地将微小的URL键与一个虚拟的URL键关联起来吗?只提供"HTTP重定向“到原始URL的网页?或者它还有更多的“魔力”?

我经常使用网址缩短服务,如TinyURL,Metamark和其他服务,但每次我这样做时,我都想知道这些服务是如何工作的。他们是创建一个重定向到另一个页面的新文件,还是使用子域?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-13 19:50:07

不,他们不使用文件。当你点击这样的链接时,一个带有完整网址的超文本传输协议请求就会被发送到他们的服务器,比如http://bit.ly/duSk8wK (指向这个问题的链接)。他们读取路径部分(这里是duSk8wK),它映射到他们的数据库。在数据库中,他们会找到一个描述(有时),你的名字(有时)和真实的URL。然后,它们发出一个重定向,即HTTP 302响应和报头中的目标URL。

这种直接重定向很重要。如果你要使用文件或者首先加载超文本标记语言,然后重定向,浏览器会将TinyUrl添加到历史记录中,这不是你想要的。此外,重定向到的站点将看到引用者(您最初来自的站点)是TinyUrl链接所在的站点(即,twitter.com,您自己的站点,无论链接在哪里)。这一点同样重要,这样网站所有者就可以看到人们来自哪里。如果加载了重定向的页面,这也不会起作用。

PS:还有更多类型的重定向。HTTP 301的意思是:永久重定向。如果发生这种情况,浏览器将不再请求bit.ly或TinyUrl站点,而这些站点希望统计命中率。这就是为什么使用HTTP302,它是一个临时重定向。浏览器会再次询问TinyUrl.com或bit.ly,这使得它可以为你计算点击次数(一些小型url服务提供了这一功能)。

票数 236
EN

Stack Overflow用户

发布于 2009-10-13 20:40:34

其他人已经回答了重定向是如何工作的,但您也应该知道它们是如何生成微型urls的。您会错误地听到他们创建URL的散列,以便为缩短的URL生成唯一的代码。这在大多数情况下是不正确的,他们没有使用散列算法(在这种情况下,您可能会有冲突)。

大多数流行的网址缩短服务只是在网址数据库中获取ID,然后将其转换为Base36 a-z0-9或Base62(区分大小写)。

TinyURL数据库表的简化示例:

代码语言:javascript
复制
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

允许灵活路由的Web框架使得处理传入的URL变得非常容易(Ruby、ASP.NET、MVC等)。

因此,在您的you服务器上,您可能有一个路由操作,如下所示(伪代码):

代码语言:javascript
复制
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);

它将任何传入的请求路由到您的服务器,该服务器在您的域www.mytinyurl.com之后包含任何文本到您关联的方法RouteURL。它将URL中正斜杠后传入的文本提供给该方法。

因此,假设您请求: www.mytinyurl.com/fif

然后将"fif“传递给您的方法RouteURL(String Fif)。然后,RouteURL会将"fif“转换为它的等价物20103,并发出一个数据库请求,以重定向到存储在ID 20103下的任何base10 (在本例中为www.digg.com)。在重定向到正确的URL之前,您还可以将Digg的访问计数增加1。

这是一个非常简单的例子,但你应该能够得到大体的概念。

票数 113
EN

Stack Overflow用户

发布于 2016-06-13 23:45:33

作为@A Salcedo答案的扩展:

一些网址缩短服务(Tinyarro.ws)通过使用Unicode (UTF-8)来对缩短网址中的字符进行编码,从而在必须添加额外符号之前允许更多的网站。因为大多数UTF-8 is accepted for use ((IRI) RFC 3987 handled by most browsers)都是从62站点的每符号到~1,112,064

在透视图中,一个可以用2个符号(1,112,064*1,112,064)编码的1.2366863e+12站点-在2009年11月,bit.ly上的缩短链接被访问2.1十亿次(Around that time, bit.ly and TinyURL were the most widely used URL-shortening services.),这比你只能容纳2个符号少~600倍,所以对于所有url缩短服务的存在,它应该至少再持续20年,直到添加第三个符号。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1562367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档