短网址生成是怎么做到的?

短网址生成是怎么做到的?,第1张

从技术原理上说,短网址是一个hash表,用于映射两个字符串的对应关系,将一个长URL进行Hash运算,然后将Hash值作为这个长链接的唯一标示,Hash碰撞的解决,会增强短链接系统的复杂度。

所以如果自己研究,这个东西太复杂了,光是研究就要大大久,那有没有办法直接用呢?其实是有的,市面上有很多短链接工具,例如爱短链。

这是几万人在用的短链接工具,生成的短链接稳定无广告,还有短连接数据分析。

短网址已经很常见了,尤其是在微博中常见到的t.cn/...那么他们是怎么实现的呢,url是怎么缩短的呢?

它只不过是将你的长url存在一个地方,然后给你一把“钥匙”。拿着这把钥匙,就可以得到原来的长网址。

先来分析一下短网址的构成

1.百度http://dwz.cn/6qgIGV

2.新浪http://t.cn/RCOA2SS

都是一个很短的域名后面加一段字母和数字混合,以新浪为例,一共7位。9个数字加26个字母,再加上大小写,就可以有3521614606208种变化,也就是3万亿。所以短时间内并不用担心不够用

下面就用js来简单实现下url的encode和decde,在线演示地址 http://jsrun.net/3piKp/edit

使用短链接的好处: 短、字符少、美观、便于发布、传播

比如我的个人博客地址: http://will-johnson.gitee.io/blog/

使用百度短网址服务转换为短网址为: https://dwz.cn/Eps6teX5

当在浏览器输入短网址回车时,会有一个302跳转。然后浏览器重新访问location地址

对于302多余的解释

302 Found,Moved Temporarily,可以简单的理解为该资源原本确实存在,但已经被 临时 改变了位置;换而言之,就是请求的资源暂时驻留在不同的URI下

对于服务器,通常会给浏览器发送 HTTP Location 头部来重定向到新的新位置,然后浏览器重新加载该Location

HTTP Location 是在两种情况下,因来自 HTTP 服务器的响应中返回 头域 :1.要求网页浏览器加载其他网页( 域名转址 )

短链接的原理其实就是:

发号器 (ID自增)+ 62进制编码

如对于我的博客地址: http://will-johnson.gitee.io/blog/ ,发号16进制:816e351d15bf,转换为62进制即为:Eps6teX5

为什么要用62进制转换

但是如何实现一个长地址多次转换都是同一个短地址呢?

这个不能完全做到。如果想要完全做到,那么就需要保存长地址到短地址的映射关系,得不偿失。

可以采取一个折中的方案,采用有有效时间的kv存储,也就是一个缓存系统。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12082889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存