短网址的原理

 什么是短网址?

将一个比较长的链接转化为一个较短的新链接,这个新链接就是短网址,并不是说,短网址一定是比原网址长,完全看原网址简不简短。

 

短网址的场景

 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
 

 

 

posted @ 2021-05-21 12:36  木人子韦一日尘  阅读(1217)  评论(0编辑  收藏  举报