短链接

短链接介绍

  • 使用较短的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

  1. DNS进行解析,得到code.cn域名对应的IP地址
  2. 向得到的IP地址发送GET请求,查询短码a5dw98
  3. 服务器通过短码查询数据库得到对应的长URL
  4. 请求通过HTTP 301状态码,将请求重定向到长URL
注:
  • 301:永久重定向、搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址

  • 302:临时重定向、搜索引擎会抓取新的内容而保留旧的地址,搜索搜索引擎认为新的网址是暂时的

  • 使用301无法统计短链接被点击的次数,无法收集用户的Cookie等信息。

  • 302跳转每次会去访问短链接服务器,从而获取长链接再去访问,效率低而且会给短链接服务器负载压力。

posted @   Cedrus  阅读(718)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示