示例(不可用)
長鏈:http://wqigdsk.sq.com?id=2011&name=china
短鏈:http://cq.cn/Rb2IDs數據庫
將長鏈存入數據庫並返回自增Id,而後把Id轉換成62進制
假設短碼爲6位,每一位由[a-z,A-Z,0-9]共62個字母組成,則共有62^6=568億種組合,已經夠用。瀏覽器
在瀏覽器中輸入上面的地址,會向http://cq.cn發送HTTP GET請求,並傳短碼。
此時,在數據庫中查詢短碼記錄,結果存在重定向到長鏈;結果不存在,返回HTTP Status Code 404或不跳轉緩存
301永久重定向,302臨時重定向
短地址一經生成就不會變化,因此用 301 是符合 http 語義的。同時對服務器壓力也會有必定減小。
可是若是使用了 301,咱們就沒法統計到短地址被點擊的次數了。而這個點擊次數是一個很是有意思的大數據分析數據源。可以分析出的東西很是很是多。因此選擇302雖然會增長服務器壓力,可是我想是一個更好的選擇。安全
1. 被惡意攻擊,消耗自增Id
同一長鏈返回同一短碼,IP限制服務器
2. 短碼安全問題
在自增Id從1開始時,短碼能夠被推斷出,能夠擴展短碼,增長一位隨機碼大數據
3. 同一長鏈短碼是否應該相同
應該相同,將長鏈和短碼對應緩存,在轉換成短碼以前進行緩存匹配數據分析