短网址的原理
什么是短网址?
将一个比较长的链接转化为一个较短的新链接,这个新链接就是短网址,并不是说,短网址一定是比原网址长,完全看原网址简不简短。
短网址的场景
1、原链接很长,影响阅读体验或者存在字数限制,可以考虑用短网址
2、想要隐藏真实链接,可以考虑用短网址
原网址:https://www.cnblogs.com/murenziwei/
生成的短网址:http://t.hk.uy/guF
(用的第三方服务器转的短网址,不晓得时效期是多久~~)
短网址的原理
需要一个服务器,生成一个短链接,重定向原链接。短链接与原链接存在一个映射关系的,访问短链接的时候,直接从数据库拿出来一个对应的原链接并且重定向。
但是,这里有个比较难的地方,就是短链接的生成,要如何保证简短和唯一性呢?只要你有想法,可以自己实现。我这里采用的比较简单,直接搞数字递增和进制转换~~
我是从10000开始的,第一个短网址是10000、第二个短网址是10001...,因为我看只有数字没有字母有点感冒,所以就搞了个16进制。我这里就贴个JavaScript的进制代码出来,
进制转换的功能蛮容易,原理都差不多。
//10进制转换16进制
function switch_sl(num){
var system = 16;
var shiliu=[ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' , 'A', 'B', 'C', 'D', 'E', 'F', 'G'],sl_arr=[]; do{ var fl_sl=Math.floor(num/system); var yu_sl=num%system; sl_arr.unshift(shiliu[yu_sl]); num=fl_sl; }while(num>0) return sl_arr.join(''); }
switch_sl(20000);//4E20
//16进制转换10进制
function switch_ten(num){
var sl_obj = {
A:10,
B:11,C:12,
D:13,
E:14,
F:15,
G:16
},sl_num = 0;
var sl_arr = num.split('');
var sl_len = sl_arr.length-1;
sl_arr.forEach((v,i)=>{
var tar = v;
if(sl_obj[tar]){
tar = sl_obj[tar];
}
sl_num+=Math.pow(16,(sl_len-i))*tar;
});
return sl_num;
}
switch_ten('4E20');//20000
经过地狱般的磨练,创造出天堂的力量。流过血的手指,弹出世间的绝唱!