短鏈接你們都不陌生,例如新浪的 t.cn 、京東的 3.cn 、淘寶的 tb.cn 等等。都已是家喻戶曉的短鏈接域名。不知道有多少人像我同樣,對短鏈接原理好奇並且嘗試自建了呢?php
今天發佈這個文章的目的,就在於分享一下個人自建短鏈接過程。首先解釋下短鏈接的實現原理,相信不少讀者,在看完原理以後,已經有能力本身編寫這樣一個工具出來。java
短鏈接構成:協議+域名+參數sql
例如:個人本身製做的短連接 http://wzfw.ltd/qjyl 。它是由「http://」 + 「 wzfw.ltd」 + "qjyl"三個部分組成。其中http爲協議,也能夠是https協議。wzfw.ltd爲域名,我手裏暫時沒有更短的限制域名,就暫時使用這個了。最關鍵的是最後一部分「qjyl」,我暫時稱做他爲code。其實這個code就是一個數據庫裏的惟一標識列,大部分短連接工具,這個標識列是要區分大小寫的數據庫
短鏈接用途服務器
最簡單的用途就是他的名字直譯「短」的「連接」,能夠把長長的一串連接縮短成爲幾個簡單的字符。但今天我要說的用途不是縮短,而是統計用量,關於這一點待會說到實現原理時候會重點解釋。另外,偶然發現還有一個做用,就是突破域名屏蔽,關於這一功能點,純屬巧合。當下微信裏傳播的不少假紅包假活動網站,都是相似於短鏈接這種多級跳躍方式突破的域名封鎖。微信
短鏈接原理工具
建立一張數據庫表,僅須要有2列便可:code列和url列。開發工具
code列也就是標識列,建議直接設置爲非自增主鍵。用於存儲短鏈接參數代碼,也就是短鏈接裏的code。url列用於存儲要跳轉的原始url。此處我是出於自用目的,所以不作額外限制。測試
短鏈接原理很是簡單,就是用戶訪問短鏈接地址,到達咱們的短鏈接網站,而後網站經過短鏈接裏的code,查詢數據庫獲得原始url,而後讓網頁跳轉到原始url便可。文章標題所說的連接推廣分析功能,就是在這個過程當中,記錄訪客的某些信息,例如:訪問時間、訪問的短連接、訪客的IP、訪客的UserAgent信息等。基於這些信息,配合推廣方式,就能夠輔助判斷出什麼時間,什麼範圍,什麼人羣的推廣更有曝光效果。網站
自建短鏈接站點
自建短鏈接須要一下條件:
域名。儘可能短,最好是連同空間一同完成備案
空間或者服務器。國內用,建議選擇國內服務商。本文選用的是阿里雲ECS。
網站源代碼。.net 、java、php等網站開發語言都可。
數據庫。不要求是不是sql,只要能完成鍵值對對照關係便可。
因爲短鏈接是惟一中間鏈接,所以須要購買的空間或者服務器儘量穩定,在這裏,我插播一點廣告信息,歡迎你們參考選購,算作是對本文的支持。
實現代碼:以.net爲例,開發工具VS2015,採用 MVC5.0 建站,代碼直接上圖:
1,添加路由:
2,記錄日誌,代碼和日誌截圖
3, 短鏈接功能實現,爲便於展現,這裏使用測試代碼,實際代碼替換爲數據庫查詢便可(截圖中,紅框2內容)
文章到此結束,相信到了這一步,不須要我分享源代碼,具有開發能力的你也能夠製做出本身的短鏈接工具網站了。目前個人短鏈接站點雖然簡陋,可是已經足以實現我統計推廣的目的。