Loading

到底什么是短链接

今天无意中看到一个名词--"短链接",一开始以为就是我们平时所说的http短连接,后来一查完全不是一回事。我们平时所说的短连接对标的概念是http长连接,指在http相应返回后就关闭http连接。而短链接的概念是指:将原本冗长的URL做一次“包装”,变成一个简洁可读的URL。

今天这边博客就来具体讲下短链接的具体概念,为什么需要使用短连接以及短连接生成的方式。


什么是短链接

比如说我之前有个URL如下:

https://mp.weixin.qq.com/s__biz=MzA5NDI5NDI3Nw==&mid=2649497809&idx=2&sn=381d02312b0c49e9cc406436f963efc5&chksm=884858bbbf3fd1ad6f431e94ca9dd0543d817a3856bf857807cb088dda9b9aa855720d4177eb&mpshare=1&scene=23&srcid=1012SKaGEy75jnX0omALmfx1#rd 

这个URL很长,而且不易于阅读。我现在通过某种方式将上面的URL转义成:

http://url.cn/5MMEX3D

当我们访问<http://url.cn/5MMEX3D>时,和访问最初的URL效果是一样的。那么http://url.cn/5MMEX3D就叫做原始连接的短链接

为什么使用短链接

节省发送的内容

我们平时发微博或者短信是都是有最大字符限制的。如果你的一个URL太长,一个URL占用的字符数就已经超过了最大限制,根本发不出去。如果你细心观察过银行的信用卡中心给你发过来的活动短信的话,你会发现短信中的URL好多都是以短链接形式发送的。

提升用户体验

还是以上面的URL为列子。这一大串URL非常不美观,给人的感觉就是木马链接,用户可能都不会去点击。相反的,如果转换成http://url.cn/5MMEX3D,就非常易于阅读,看起来整洁干净,提高用户体验和点击率。

便于链接追踪,分析点击来源

通过短链接可以获知大部分用户的来源,和来源渠道的转化率、广告渠道的质量。通过渠道效果对比数据,更合理的进行广告投放和资源配置。

同一个页面不同的链接

每个用户需要推送带参数的唯一链接。

一定程度上保护原始网站链接

我们在玩Facebook,领英等社交时,有些需要分享一些带有我们网站链接的帖子和消息,尤其对于小白来说,如果发的内容次数过多,并且毫无互动可言或者直接被人举报多次,那么你的网址就会被社交平台标记,一旦标记,链接权重就会受影响,后面再投社交广告时就有麻烦了。

但是如果我们使用短链接就不会影响原始网站。

短链接生成平台

网上有很多短链接生成平台,下面列举几个:

还有许多其他小平台和私人搭建的平台,建议大家使用大厂的平台。

短链接生成原理

还是以刚刚的短链接http://url.cn/5MMEX3D为列子。当我们访问这个链接的时候我们先访问到url.cn对应的服务器,然后根据参数5MMEX3D找出它对应的原始连接,再重定向到这个原始链接上去。

短链接工作的原理非常简单,其中的关键点就是怎么将5MMEX3D和原始链接进行映射?下面引用下这篇博客总结的短链接实现方案。

可能的方案有以下几种:

  • 脑子第一时间想到的是:能不能通过一个压缩或者编码算法将长链接压缩更小的字符?显然,不能,压缩算法大多数都是针对大文本才奏效,本身的URL也不见得有多大...压缩出来肯定比原来的URL还大。
  • 脑子第二时间想到的是:能不能用Hash算法?还是不能,用Hash存在哈希碰撞的问题。这个场景是不允许有碰撞的。

其实现在业内比较流行的做法是:发号器(ID自增)+62进制编码。比如,我将https://github.com/ZhongFuCheng3y/3y这个长链接看作是10000,然后使用进制转换工具将10000进行62进制编码得到的结果是:2Bi,那么我们就可以得到一个短链接http://url.cn/2Bi

为什么要用62进制转换?64进制转换倒是听得多了

  • 62进制转换是因为62进制转换后只含数字+小写+大写字母。而64进制转换会含有/,+这样的符号(不符合正常URL的字符)
  • 10进制转62进制可以缩短字符,如果我们要6位字符的话,已经有560亿个组合了。

参考

posted @ 2019-10-14 19:50  程序员自由之路  阅读(6521)  评论(2编辑  收藏  举报