短網址的原理


 什么是短網址?

將一個比較長的鏈接轉化為一個較短的新鏈接,這個新鏈接就是短網址,並不是說,短網址一定是比原網址長,完全看原網址簡不簡短。

 

短網址的場景

 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
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM