所以如果自己研究,这个东西太复杂了,光是研究就要大大久,那有没有办法直接用呢?其实是有的,市面上有很多短链接工具,例如爱短链。
这是几万人在用的短链接工具,生成的短链接稳定无广告,还有短连接数据分析。
短网址已经很常见了,尤其是在微博中常见到的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存储,也就是一个缓存系统。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)