短链接
短链接介绍
- 使用较短的URL字符串去替代长URL字符串。
- 使用场景大多见于商业推广等,但是短信有最大字符限制,而且为了更好的观感体验,短信里的链接一般都使用短连接。
- 短链接一般是由
[a - z, A - Z, 0 - 9]这62 个字母或数字组成,短码的长度也可以自定义,但一般不超过8位。比较常用的都是6位,6位的短码已经能有568亿种的组合。
短链接的实现方式
自增id
- 一种无碰撞的方法。
- 维护一个自增id,在新增短链接时,将自增id的十进制转换为62进制的字符串。
- 自增id生成方法:数据库自增主键、Redis的INCR、分布式ID(雪花算法)
- 优点:实现简单
- 缺点:由于自增主键的增长,得到的链接长度会增长;同一长链接多次生成短链,短链不一致。
MD5哈希
- 使用MD5哈希,可以实现输入任意长度的数据,输出固定长度的数据。相同的输入数据始终得到相同的输出,不同的输入数据尽量得到不同的输出。
- MD5加密结果分为8位一组,最后产生4个短地址,这样做重复的概率被大大提高了。
- 优点:链接的长度始终不变,同一长链接多次生成短链接,结果不变
- 缺点:哈希算法可能会产生冲突。
短链接跳转
例如访问http://code.cn/a5dw98
- DNS进行解析,得到code.cn域名对应的IP地址
- 向得到的IP地址发送GET请求,查询短码a5dw98
- 服务器通过短码查询数据库得到对应的长URL
- 请求通过HTTP 301状态码,将请求重定向到长URL
注:
-
301:永久重定向、搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址
-
302:临时重定向、搜索引擎会抓取新的内容而保留旧的地址,搜索搜索引擎认为新的网址是暂时的
-
使用301无法统计短链接被点击的次数,无法收集用户的Cookie等信息。
-
302跳转每次会去访问短链接服务器,从而获取长链接再去访问,效率低而且会给短链接服务器负载压力。

浙公网安备 33010602011771号