<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最近學到的「短鏈接」知識

          共 2212字,需瀏覽 5分鐘

           ·

          2019-10-11 23:21


          只有光頭才能變強。

          文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y

          最近接了一個需求,涉及到了短鏈接的相關的知識,于是去查閱了相關的資料,在這里給大家整理分享一下。

          一、短鏈接介紹

          舉個例子,現(xiàn)在我的GitHub的地址是這個:https://github.com/ZhongFuCheng3y/3y (36個字符)

          我通過百度的短鏈接服務可以將上面的地址轉(zhuǎn)成https://dwz.cn/LwlrfG4j(23個字符)

          7cfb8490e93c6ee03674fcd45f6e8095.webp轉(zhuǎn)短鏈接

          那我為什么要將原有的URL轉(zhuǎn)成較短的鏈接呢?比如我們發(fā)短信提醒用戶去XXX,XXX有優(yōu)惠活動,在文案上往往會帶有一個鏈接進行跳轉(zhuǎn),方便用戶快速去到對應的活動落地頁。

          而短信的發(fā)送是需要成本的,短信的成本主要有兩方面組成:

          1. 發(fā)送的人數(shù)(發(fā)的人越多,自然短信的花費就越大,這個我就不解釋了)

          2. 短信發(fā)送的字數(shù)(比如,文案總字數(shù)超過70個字,那就算兩條短信計費,超過140個字就算三條短信計費)

          所以在發(fā)送短信給用戶時:要么就投放更加精準優(yōu)質(zhì)的用戶,以便控制好發(fā)送的數(shù)量,要么就盡可能控制文案的字數(shù)。

          顯然,如果在短信上配上普通的URL,那真正的文案可寫的字數(shù)就沒多少了。于是我們可以發(fā)現(xiàn),各大公司的短信推送的URL都是短鏈接。

          5109ad1e6a306c20bebb82367885a7d5.webp短鏈接案例之一

          比如在一些平臺發(fā)布消息時會限制字數(shù),如果我們的發(fā)的URL過長就很容易就被限制住了:

          0a2563f1ec919ce613ed101d876be410.webp限制字數(shù)

          使用短鏈接的好處:短、字符少、美觀、便于發(fā)布、傳播。

          二、短鏈接它是怎么干的呢?

          我們先回到生成好的短鏈上https://dwz.cn/LwlrfG4j

          雖然這個鏈接看起來有點奇怪,但他終究還是一個鏈接,從URL的特征我們可以分出:

          • dwz.cn是域名

          • LwlrfG4j是參數(shù)

          691aa980f468ff90f4ca56140d912682.webp域名

          我們在瀏覽器請求一下短鏈接看看是什么情況:

          671f6cc8a63c8eb6617bdf37de52c9ea.webp302跳轉(zhuǎn)

          短鏈接的原理其實就是:

          • 將長鏈接通過一定的手段生成一個短鏈接

          • 訪問短鏈接時實際訪問的是短鏈接服務器,然后根據(jù)短鏈接的參數(shù)找回對應的長鏈接

          • 重定向跳轉(zhuǎn)

          d0e5dd751e1eaa839dad58d92e77d537.webp大致原理圖

          2.1 核心的要解決的問題

          通過上面的分析我們可以知道的是,我們實際核心要做的是怎么從LwlrfG4j類似這樣的參數(shù)找到對應的完整URL:https://github.com/ZhongFuCheng3y/3y

          腦子第一時間想到的是:能不能通過一個壓縮算法將https://github.com/ZhongFuCheng3y/3y壓縮更小的字符?

          顯然,不能,壓縮算法大多數(shù)都是針對大文本才奏效,本身的URL也不見得有多大…壓縮出來肯定比原來的URL還大。

          腦子第二時間想到的是:能不能用Hash算法?還是不能,用Hash存在哈希碰撞的問題

          • 什么是哈希碰撞?兩個不相同的字符串(值)進行Hash操作后,得到的哈希值相同。

          • 這就意味著,兩個完全不同的長鏈得到的哈希值一模一樣,而我的短鏈是依賴哈希值去找到長鏈的(此時一個短鏈對應多個長鏈,這不合理)。

          腦子第三時間想到的是?腦子想不到了。

          現(xiàn)在業(yè)內(nèi)用得比較多的是發(fā)號器(ID自增)+62進制編碼

          • 比如,我將https://github.com/ZhongFuCheng3y/3y看作是10000,然后將10000進行62進制編碼得到的結(jié)果是:2Bi

          401e7d03a9b6aa0b6d21fdb08f53e8ea.webp

          那我的短鏈URL就可以弄成https://3y.cn/2Bi,其中3y.cn是域名,2Bi是經(jīng)過62進制轉(zhuǎn)換后的參數(shù)。

          為什么要用62進制轉(zhuǎn)換?64進制轉(zhuǎn)換倒是聽得多了

          • 62進制轉(zhuǎn)換是因為62進制轉(zhuǎn)換后只含數(shù)字+小寫+大寫字母。而64進制轉(zhuǎn)換會含有/,+這樣的符號(不符合正常URL的字符)

          • 10進制轉(zhuǎn)62進制可以縮短字符,如果我們要6位字符的話,已經(jīng)有560億個組合了。

          f24001d0ef9f4eee9731398d78f2d48e.webp6位字符

          總結(jié):

          • ID自增后,轉(zhuǎn)成62進制,在DB保存映射關系,生成短鏈接

          68da517c0901a37557ca7ac4a967a4c6.webp短鏈接過程

          三、短信的鏈接直接跳轉(zhuǎn)到APP

          以下內(nèi)容來源:

          https://sq.163yun.com/blog/article/158315832059072512

          作者:西西吹雪

          綜合起來就是:

          • 通過 Deep Links(iOS 則是Universal Links),可以實現(xiàn)點擊短信鏈接直接喚起 App;

          • 如果系統(tǒng)因為各種原因不支持 Deep Links,備選方案是 intent filter,不過會出彈框讓用戶選擇用哪個 App 打開鏈接;

          • 如果用戶沒有選擇我們的 App 而是選擇了瀏覽器打開,則通過 自定義 scheme 嘗試喚起 App;

          • 由于技術和成本問題,我們忽略不支持 自定義 scheme 的瀏覽器。

          6f5ad5002877b1451bde93337e5d5006.webp短信鏈接喚醒APP

          最后

          這篇文章主要是簡單了解一下短鏈接的相關知識,一個完備的短鏈服務肯定還要考慮更多的事,這里我就不展開了(畢竟我也沒真正寫過,可以在下方的鏈接繼續(xù)學習)~

          更多資料查閱:

          • https://www.zhihu.com/question/29270034/answer/46446911

          • https://hufangyun.com/2017/short-url/

          • https://blog.csdn.net/c10WTiybQ1Ye3/article/details/78098840

          兩年嘔心瀝血的文章「面試題」「基礎」「進階」這里全都有!


          200多篇原創(chuàng)技術文章海量視頻資源精美腦圖面試題

          長按掃碼可關注獲取?

          在看和分享對我非常重要!21692da13ffa845e39dde96bc1dc4aef.webp


          瀏覽 144
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人久在线 | 99久久久久久久无码 | 欧美肉丝袜videos办公室 | 国产最新在线播放 | 久久久久免费黄色视频 |