01 短链接技术背景
有没有接收到类似上图的推广或促销短信?之前不以为然,不就是一个网址么?也没有关心。
直到最近做了一个项目,用户提交资料以后,审核完成后,需要短信通知用户,引导用户点击链接查看结果。简单的以为就是放一个链接就好了,结果再设计评审的时候,有老司机提出来:链接太长会被短信分成两条发送,需要用到短链接。短链接也正式进入我的视野。
在短信营销场景中,运营商通常将短信长度限制在70字符以内;微信小程序分享卡片对URL长度有严格限制;微博等社交平台也会自动截断长链接。短链接技术通过将原始长URL压缩为6-8位字符的短码,完美解决这些场景的URL展示问题。
02 核心实现原理
无论任何看似简单展示,背后都有你想象不到的技术支撑。曾经一个同事有非常严重的职业病,他说每次点击一个按钮或者打开网页,都会不自觉的想像背后的处理逻辑。甚至因此变的胆小,觉得他的每一步操作都会泄露自己的隐私被第三方采集。
短链接是怎么实现的呢?
- 映射机制:建立短码与原始URL的键值对映射
- 重定向技术:服务端返回302状态码实现跳转,重定向到原始的URL
- 编码算法:生成短码(a-z,A-Z, 0-9)
其中短码的生成,可以自定义生成,也可以通过编码算法将原始链接转化成短码。
03 最佳实践
3.1 随机算法生成短码
利用JDK 手搓方法
@Test
void test01() {
String BASE_SEED = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int len = BASE_SEED.length();
Random random = new Random();
StringBuffer codeBuffer = new StringBuffer();
for (int i=0; i< 6; i++) {
codeBuffer.append(BASE_SEED.charAt(random.nextInt(len) - 1));
}
System.out.println(codeBuffer);
// 结果 cNrt5D</