短連結原理分析

2021-02-13 工匠小豬豬的技術世界

每天分享一個技術知識點,推薦一篇值得閱讀的好文,我們一起終身學習。

作者:coolblog    來源:

https://segmentfault.com/a/1190000010660103

同步發布地址:http://www.coolblog.xyz

(本文版權歸原作者所有。轉載文章僅為傳播更多信息之目的,如有侵權請與我們聯繫,我們將及時處理。)

1. 什麼是短連結2. 常見的短連結壓縮算法3. 使用發號策略壓縮URL4. 幾個細節問題

1. 什麼是短連結

顧名思義,短連結即是長度較短的網址。通過短連結技術,我們可以將長度較長的連結壓縮成較短的連結。並通過跳轉的方式,將用戶請求由短連結重定向到長連結上去。短連結主要用在諸如微博,BBS等對帖子字數有限制的網站,通過使用短連結,用戶可以把注意力放在帖子的內容上,而不是在擔心連結超長的問題。這裡以百度的 dwz.cn 短連結服務為例,我們使用百度搜索"hello world",連結為https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=hello%20world&rsv_pq=8487bffe00068c60&rsv_t=a9e0f5b6haiMQwAi4N2y8PHDv37rM6sjjKrHJb6KdMGg2dQuUjAnmSEnXtE&rqlang=cn&rsv_enter=1&rsv_sug3=10&rsv_sug1=9&rsv_sug7=100,統計了一下,這條連結長度為230。如此長的連結佔據微博篇幅不說,也會影響微博的美觀度。這個時候我們可以使用百度短連結服務壓縮一下上面的長連結,壓縮後的連結為:http://dwz.cn/5DDXhH。可以看到,壓縮後的連結長度比原連結明顯變短了。

百度短地址服務2. 常見的短連結壓縮算法

常見的短連結壓縮算法有兩種,第一種是對 URL 進行hash運算,在得到的hash值上做進一步運算,得到一個較短的hash值。第二種是通過資料庫自增ID或分布式key-value系統模擬發號器進行發號壓縮URL。兩種方式各有優劣,hash運算簡單易實現,但是有一定的衝突率。隨著 URL 壓縮數量的增加,衝突數也會增加,最終導致一部分用戶跳轉到錯誤的地址上,影響用戶體驗。而發號器發號壓縮 URL 優缺點恰好和hash壓縮算法相反,優點是不存在衝突問題。缺點是,實現上稍複雜,要協調發號器取初始號。本文對應的練手項目是基於第二種壓縮算法實現的,下面也將對詳細分析第二種算法。

3. 使用發號策略壓縮URL

發號策略是這樣的,當一個新的連結過來時,發號器發一個號與之對應。往後只要有新連結過來,發號器不停發號就好。舉個例子,第一個進來的連結發號器發0號,對應的短連結為 xx.xxx/0,第二個進來的連結發號器發1號,對應的短連結為 xx.xxx/1,以此類推。
發號器發出的10進位號需要轉換成62進位,這樣可以大大縮短號碼轉換成字符串後的長度。比如發號器發出 10,000,000,000 這個號碼,如果不轉換成62進位,直接拼接在域名後面,得到這樣一個連結 xx.xxx/10000000000。將上面的號碼轉換成62進位,結果為AOYKUa,長度只有6位,拼接得到的連結為 xx.xxx/AOYKUa。可以看得出,進位轉換後得到的短連結長度變短了一些。6位62進位數,對應的號碼空間為626,約等於568億。也就是說發號器可以發568億個號,這個號碼空間應該能夠滿足多數項目的需求了,所以基本上不用擔心發號器無號可發的情況。
上述是發號策略壓縮URL的原理,在實際寫代碼的過程中還需要考慮很多細節,比如緩存,存儲等。本文對應的項目基於 Redis 緩存,MySQL 資料庫實現了一個簡單的分布式短連結服務。代碼放到了 Github 上了 -> 分布式短連結項目代碼

4. 幾個細節問題Q:同一長連結,每次轉成的短連結是否一樣

A:同一長連結,每次轉成的短連結不一定一樣,原因在於如果查詢緩存時,如果未命中,發號器會發新號給這個連結。需要說明的是,緩存應該緩存經常轉換的熱門連結,假設設定緩存過期時間為一小時,如果某個連結很活躍的話,緩存查詢命中後,緩存會刷新這個連結的存活時間,重新計時,這個連結就會長久存在緩存中。對於一些生僻連結,從存入緩存開始,在存活時間內很可能不會被再次訪問,存活時間結束緩存會刪除記錄。下一次轉換這個生僻連結,緩存不命中,發號器會重新發號。這樣一來會導致一條長連結對應多條短連結的情況出現,不僅浪費存儲空間,又浪費發號器資源。那麼是否有辦法解決這個問題呢?是不是可以考慮建立一個長連結-短連結的key-value表,將所有的長連結和對應的短連結都存入其中,這樣一來就實現了長短連結一一對應的了。但是想法是美好的,現實是不行的,原因在於,將所有的長連結-短連結對存入這樣的表中,本身就需要耗費大量的存儲空間,相對於生僻連結可能會對應多條短連結浪費的那點空間,這樣做顯然就得不償失了。

Q:短連結使用301跳轉還是302跳轉

A:這裡囉嗦一下301和302的跳轉在短連結服務使用場景下的區別:用戶第一次訪問某個短連結後,如果伺服器返回301狀態碼,則這個用戶在後續多次訪問統一短連結,瀏覽器會直接請求跳轉地址,而不是短連結地址,這樣一來伺服器端就無法收到用戶的請求。如果伺服器返回302狀態碼,且告知瀏覽器不緩存短連結請求,那麼用戶每次訪問短連結,都會先去短連結服務端取回長連結地址,然後在跳轉。從語義上來說,301跳轉更為合適,因為是永久跳轉,不會每次都訪問服務端,還可以減小服務端壓力。但如果使用301跳轉,服務端就無法精確搜集用戶的訪問行為了。相反302跳轉會導致服務端壓力增大,但服務端此時就可精確搜集用戶的訪問行為。基於用戶的訪問行為,可以做一些分析,得出一些有意思的結論。比如可以根據用戶IP位址得出用戶區域分布情況,根據User-Agent消息頭分析出用戶使用不同的作業系統以及瀏覽器比例等等。

參考

https://www.zhihu.com/question/29270034/answer/46446911
http://blog.csdn.net/xyz_lmn/article/details/8057270
http://blog.csdn.net/beiyeqingteng/article/details/7706010

如果你覺得文章不錯,歡迎分享到朋友圈

長按下方圖片識別二維碼

關注豬豬

願每一個點讚的你

被世界溫柔以待

👇👇

相關焦點

  • 短連結生成原理,附上祖傳代碼
    當您要在社交媒體、微博、簡訊或者電子郵件中發送連結的時候,你會發現原始的長連接十分影響內容的閱讀。這時候便要使用短連結生成器了,這個工具可以幫助您縮短原長連結,今天來說說短連結生成原理是什麼。短連結生成原理短連結生成工具之所以能夠縮短連結,是因為使用web伺服器的URL重定向功能。其原理就是把新URL(短連結)重定向到舊URL(長連結)。當您在瀏覽器輸入或者點擊URL的時候,它實際上將HTTP命令發送到Web伺服器,指示web頁面該如何工作。
  • 長URL連結轉短連結算法
    引言很多大型網站都加入了短連結的功能。之所以要是使用短連結,主要是因為微博只允許發140 字,如果連結地址太長的話,那麼發送的字數將大大減少。短連結的主要職責就是把原始連結很長的地址壓縮成只有6 個字母的短連結地址,當我們點擊這6 個字母的連結後,我們又可以跳轉到原始連結地址。
  • 什麼是磁力連結,磁力鏈的原理
    什麼是磁力連結(磁力鏈的原理)2009年時,由於版權的問題以及其他種種原因,很多BT伺服器被迫關閉,這不僅使得很多種子文件從此銷聲匿跡,就連BT Tracker伺服器也停止了解析工作,由此全世界的BT下載進入了一個冰河時代
  • 如何生成高性能的短連結?
    來看下以下極客時間發我的營銷簡訊,點擊下方藍色的連結(短鏈)瀏覽器的地址欄上最終會顯示一條如下的長鏈。另外用短鏈在內容排版上也更美觀。2、我們經常需要將連結轉成二維碼的形式分享給他人,如果是長鏈的話二維碼密集難識別,短鏈就不存在這個問題了,如圖示
  • 短連結服務Octopus的實現與源碼開放
    前提半年前(2020-06)左右,疫情觸底反彈,公司的業務量不斷提升,運營部門為了方便簡訊、模板消息推送等渠道的投放,提出了一個把長連結壓縮為短連結的功能需求。當時為了快速推廣,使用了一些比較知名的第三方短鏈壓縮平臺,存在一些問題:收費貴一些情況下,短鏈域名在部分第三方平臺例如微信會被封殺回源數據沒有辦法定製處理方案,無法打通整個業務鏈路進行數據分析和跟蹤基於此類問題,決定自研一個(長連結壓縮為)短連結服務,當時剛好同步進行微服務拆分,內部很多微服務需要重新命名,組內的一個妹子說不如就用Github的吉祥物去命名octopus cat(章魚貓
  • 如何把長連結變成短連結?3個工具幫你實現!
    不管是文章還是視頻的連結,很多時候都是長長的一串,如果是發給別人的話,就會顯得囉裡囉嗦,佔用空間大不說,還非常難看,使用起來不方便。其實長連結也是能夠變成短連結的,下面就帶來三個工具,讓連結變得美觀又簡潔。
  • 短連結工具怎麼生成QQ、微信防弊的短網址?
    短連結一直是社群推廣中非常重要的環節,短連結的打開決定了推廣的效果,所以,短連結工具非常重要。做過社群運營的小夥伴都知道,維持群內活躍可以說是最日常的工作,也是最難的。而增加用戶黏度才是最根本的目的。目前網際網路發展的速度之快,市場上已經出現了不少的短連結服務,而選擇一個靠譜的短連結服務就很有必要了。一個靠譜的短連結服務不僅可以將長連結轉換成短連結,還可以幫助你在推廣的過程中節省字數和防紅防封,大大提高了用戶的舒適度,更可以提供推廣中的數據分析,幫助你更好地了解你的用戶。簡直就是運營人的福音。
  • 長連結怎麼轉為短連結?方法其實非常簡單
    傳統的網站連結因為域名長度或者各種參數顯得非常冗長。用來在其他平臺推廣非常難看且不方便。直接導致的原因就是推廣信息不方便閱讀、連結點擊率過低,並且容易被第三方平臺屏蔽。特別是如今微博加入了白名單制,只有進入白名單的網站才能發布連結。這更加突顯了短連結的重要性。
  • 聊聊短地址及其原理......
    後來我們商量了一下,最終借鑑短地址的思想解決了問題。道理很簡單,因為我們請求中的附加字符串信息第三方服務只是透傳回來給我們,我們只需要把這些附加信息進行字符壓縮就可以了,這樣請求帶過去的字符串長度就滿足了要求😊。無論是寫文章還是製作一些表格的時候,我會時常用到短地址。短地址的優勢在於其短(字符少)、簡潔,方便書寫又不佔位置。方便在社交網絡和第三方平臺上分享連結,投放廣告。
  • 短連結推廣賺錢項目實操:月入10000,長久操作被動收入
    今天來說說短連結這個項目。最初短連結是將長的連結轉化成短連結網址的形式,這樣更有利於傳播,還能規避風險。這個做很多自媒體的朋友應該都知道,也比較常見,畢竟短連結從視覺上看起來沒那麼累贅,轉化率也會高出很多。
  • 共生·連結未來—短視頻創作者連結大會舉行
    短視頻行業的日益繁榮,令短視頻內容生產乘著行業的東風飛速發展。短視頻內容創作者、MCN機構、短視頻平臺、品牌等多方如何實現行業資源的無縫對接,愈來愈成為行業的關注熱點。 為了給短視頻創作者與各大企業們搭建溝通交流平臺,11月26日下午,共生·連結未來—短視頻創作者連結大會盛大舉行。
  • 面試官:講一下高性能短連結系統怎麼設計?
    來看下以下極客時間發我的營銷簡訊,點擊下方藍色的連結(短鏈)瀏覽器的地址欄上最終會顯示一條如下的長鏈。另外用短鏈在內容排版上也更美觀。2、我們經常需要將連結轉成二維碼的形式分享給他人,如果是長鏈的話二維碼密集難識別,短鏈就不存在這個問題了,如圖示
  • 沒有注意到短連結作用,提高轉化率?
    在做賣家的都有一個眾所周知的問題,就是在推廣方面,長連結如何轉換短連結的細節問題,在轉換短連結的時候,需要用到短連結轉換工具,好的短連結工具可以提升轉化率,可直接跳轉詳情頁,減少用戶流失率,suowo.cn,短連結在線免費生成。
  • 分享一款新浪短連結在線生成器-新浪短網址api接口平臺
    在分享連結的時候,如果連結很長的話,很容易導致連結複製不完整,從而連結打不開,而且長連結因為太長,會給人一種不那麼安全可靠的感覺,在點擊量上就會大大減少。為什麼要生成新浪短連結?1.簡訊,微博營銷因為在簡訊和新浪微博等平臺中,字符數量有限制,如果使用長連結會佔用大量字符,使得文本縮水。
  • 電熱水壺保溫原理及電路分析
    打開APP 電熱水壺保溫原理及電路分析 周碧俊 發表於 2018-08-28 10:16:48 電熱水壺保溫原理 具有保溫功能的水壺,大多有二個發熱管,有一個保溫發熱管是通過保溫開關單獨控制的,它可以讓用戶控制選擇是否保溫。
  • 其中一個細節需要注意,短連結可提高轉化率?
    二、掌握細節,短連結工具在做淘寶客的時候,大家在推廣產品的時候,因為產品的連結有詳情頁,所以連結會過長,這樣你在分享的時候,連結的打開率就很低。但如果使用了短連結工具的話,將長連結轉換成短連結,買家在跳轉的時候依然跳轉的是原來的長連結,絲毫不影響內容。
  • 史上最全—90%考研人使用的數學分析習題冊與Walter Rudin的《數學分析原理》
    今天分享的是的Walter Rudin的《數學分析原理》與80%考研人使用的數學分析習題冊首先必須要說Rudin的《數學分析原理》裡的證明和論述無比的巧妙而精緻
  • 2020國家公務員考試申論作文開頭加分項:原理效應
    二、解析原理效應—木桶原理  1. 含義  木桶原理是指一個由若干木板構成的木桶,其容量取決於最短的那塊板,而不是取決於最長的那塊板,也稱為短板效應。文章開頭的邏輯在於簡要分析,亮明文章的總論點。原理效應作為專業性較強的內容,可以放在文章開頭的首句。為了突出「短板」,我們可以在原理效應後,陳述某個領域的好現象,再陳述主題存在的問題。將問題存在的問題看做這個領域的短板,將其和木桶原理建立聯繫,進而引出總論點——要解決這一問題。
  • 外媒盤點2018年穀歌TOP SEO工具(連結建設、反向連結分析篇)
    以下是六種不同類別的SEO工具: 連結建設 關鍵詞研究 內容優化 反向連結分析 排名追蹤 一體式SEO工具 該系列文章將分成三部分,分別介紹不同種類的SEO工具,本文將介紹用於連結建設和反向連結分析SEO工具。
  • 方差分析(ANOVA)原理
    方差分析(ANOVA)原理微信公眾號:生信小知識關注可了解更多的教程及單細胞知識。