短链的核心逻辑是链接映射,或者说重定向。
简述
短链,顾名思义,短链接。它是相对于原链接的一个概念,与原链接有相同的目的地,但比原链接更短。
为什么要使用短链接
很多时候,我们的一个链接会很长,比如:
https://cn.bing.com/search?q=urldecode+-site:*.csdn.net+-site:zhihu.com&cvid=0c46addea00b41a9b8c2ecd1058a0190&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCDQ4ODFqMGo5qAIAsAIB&FORM=ANAB01&PC=U531
我们在分享或是传递这个链接的时候,就会占用更多的资源,并且在显示上也不好看,所以我们就设计了一个类似于别名的东西,你用这个别名就可以拿到对应的原链接。
设计
设计上没有好讲的,一共就涉及到两个主要步骤:
- 短链生成
- 寻链
短链生成
短链生成的算法其实有很多,你甚至可以自己用随机数。但是短链生成的时候需要注意一些细节:
- 短链冲突。不同原链生成的短链是不能重复的,也就是短链->原链是单向唯一的。
- 短链一般会用专有的访问域,比如短链的上下文是全局唯一,甚至可以有专门的寻链域名用作隔离。
寻链
寻链其实就是寻找短链到长链映射的过程。
实际上,我们在生成短链的时候会需要将短链作为寻址key,与对应的长链一起保存下来。我们知道短链到原链是单向唯一的,这表示我们甚至可以用简单的Map表来存储映射信息。当然,是选用缓存还是持久化,这就要根据具体项目具体分析了。
简单demo
我这里用Java的SpringBoot框架简单写一个demo。
1 |
|
代码内的gen
方法就是生成短链的请求,chain
就是短链访问的路径。
实际上,你完全可以根据个人需求,创建专门的短链生成与转发服务器。