什么是短網址?
將一個比較長的鏈接轉化為一個較短的新鏈接,這個新鏈接就是短網址,並不是說,短網址一定是比原網址長,完全看原網址簡不簡短。
短網址的場景
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