到底什么是短链接
今天无意中看到一个名词--"短链接",一开始以为就是我们平时所说的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亿个组合了。