提供一個短址服務
你有沒有發現,我們的任務中出現長 URL 就會比較麻煩?如果有一個短址生成器就好了。雖然市面上有很多,但是我們可以重復發明一個輪子,利用這個機會嘗試一下簡單的 Web 全棧開發。
任務
做一個短鏈接生成器,可以將一個長鏈接縮短成一個短鏈接。
要發車了
發車前,和大家說一下
如果不想重復的造輪子,想開箱即用,可以使用基於 PHP
的開源軟件 YOURLS。YOURLS
還可以和 WordPress
整合到一起,功能強大,可擴展性高。
本文記錄了開發短網址系統的整個過程,包括初期的算法調研、模塊設計、數據庫設計、功能擴展等。
什么是短鏈接
就是把普通網址,轉換成比較短的網址。比如:http://t.cn/RkCdbRA這種,在微博這些限制字數的應用里。好處不言而喻。短、字符少、美觀、便於發布、傳播。
百度短網址 http://dwz.cn/
谷歌短網址服務 https://goo.gl/ 號稱是最快的
原理解析
當我們在瀏覽器里輸入 http://t.cn/RkCdbRA 時
- DNS首先解析獲得 http://t.cn 的
IP
地址 - 當
DNS
獲得IP
地址以后(比如:74.125.225.72),會向這個地址發送HTTP
GET
請求,查詢短碼RkCdbRA
- http://t.cn 服務器會通過短碼 RkCdbRA 獲取對應的長 URL
- 請求通過
HTTP
301
轉到對應的長 URL https://share.earnrmb.us 。
這里有個小的知識點,為什么要用 301 跳轉而不是 302 吶?
301 是永久重定向,302 是臨時重定向。短地址一經生成就不會變化,所以用 301 是符合http
語義的。同時對服務器壓力也會有一定減少。
但是如果使用了301
,我們就無法統計到短地址被點擊的次數了。而這個點擊次數是一個非常有意思的大數據分析數據源。能夠分析出的東西非常非常多。所以選擇302雖然會增加服務器壓力,但是我想是一個更好的選擇。