日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

长地址URL转短地址URL

發(fā)布時間:2023/12/29 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 长地址URL转短地址URL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.前言

  長地址:

    就是頁面請求實際的地址。如知乎某文章https://www.zhihu.com/question/20103344

  短地址:

    特定長地址縮短后對應(yīng)的長度很短的地址,基本上可以理解為一一對應(yīng)關(guān)系

    如https://www.zhihu.com/question/20103344的短地址為 http://dwz.date/am7a

  備注:

    上述地址是由新浪地址轉(zhuǎn)換平臺提供的,對于同一個長地址,不同的轉(zhuǎn)換平臺生成的短地址不一樣,

    同一個平臺不同時間長成的短地址也可能不一樣

2.使用場景

  微博上發(fā)送新微博內(nèi)容時,限制字?jǐn)?shù)為140字,如果需要分享鏈接,那么很長的鏈接會導(dǎo)致內(nèi)容篇幅縮小,而且url本身也可能超過140個字,所以如果把地址轉(zhuǎn)換為短地址,那么用戶輸入短地址,看到的是和輸入長地址一樣的頁面信息,那么用戶體驗會變好。

  發(fā)送推廣短信時超出70字算兩條短信,費用增加,長鏈接也影響用戶體驗

  綜上

    在特定場景下,需要能夠把長連接轉(zhuǎn)換為短鏈接

    用戶輸入短鏈接的效果和長連接一樣(瀏覽器后臺重定向)

    短鏈接需要長期有效(或者一定時間內(nèi),如1天內(nèi)有效)

    對于同樣的長鏈接,生成的短鏈接需要一樣(或者在一定時間內(nèi)一樣)

3.實現(xiàn)必要條件(基于本博客所用方案而言的必要條件)

  1.有一個獨立的域名系統(tǒng),用于拼接完整的短鏈接,以后后續(xù)反查長鏈接地址

  2.一個id發(fā)號器(生成樹數(shù)字保持唯一),如數(shù)據(jù)庫的自增序列

4.實現(xiàn)方案

  a.將長鏈接字符串插入數(shù)據(jù)庫,使用sequence遞增序列作為主鍵,然后返回主鍵id

  或者是先從發(fā)號器取出一個新的id,插入id和長鏈接字符串(兩個字段,且id為主鍵)

  b.將主鍵id進行62進制編碼(10數(shù)字+26大寫字母+26小寫字母,一般url用這些表示)

  c.使用自身域名信息+62進制字符串拼接為完整的url,然后返回

  解析:

    客戶請求短鏈接時,時間是尋址短鏈接域名發(fā)送到我們的系統(tǒng)上,

    然后根據(jù)鏈接后面的url后綴,轉(zhuǎn)換為10進制,去數(shù)據(jù)庫查詢這個主鍵,找出長鏈接,

    然后返回給客戶端,且返回碼為301/302(瀏覽器會自動重定向到長鏈接地址,用戶無感知).

5.優(yōu)化方案

  上面有兩個問題未解決:

    a.發(fā)號器可能會成為瓶頸

    b.對于同樣的長鏈接,生成的短鏈接不一樣

  解決辦法:

    a.發(fā)號器問題

      可以多用幾個發(fā)號器,各自發(fā)號不重復(fù)即可。

      如10個發(fā)號器,則發(fā)號尾號是1,2,3,4,5,6,7,8,9,0

      即發(fā)號進制等于發(fā)號器的數(shù)量,如果發(fā)號器只有一個,那么每次發(fā)號數(shù)增加1.

    b. 短鏈接不一樣的問題

      方案一:內(nèi)存存放LinkedHashMap,key為長鏈接,value為短鏈接,

      考慮到內(nèi)存問題,那么只能存放一定數(shù)量的鍵值對,使用LRU進行驅(qū)逐。

      這樣,在一定時間內(nèi),某個長鏈接生成的短鏈接一直不變。

      方案二:(考慮到要求長鏈接對應(yīng)的短鏈接要永久一樣)

      存入數(shù)據(jù)庫時,除了唯一id和長鏈接地址外,使用長鏈接生成64位hashcode,然后一并存入數(shù)據(jù)庫,并且添加索引

      下次插入數(shù)據(jù)庫之前,先查詢hashcode列是否有這個值,有的話則取出比較value是否相等,

      這里可能是hash沖突,實際上不是同一個長鏈接,但是使用64位hashcode的話,沖突概率會小很多,

      這里使用hashcode做索引,而不是直接使用長鏈接本身,是考慮到長鏈接比較長,作為索引的話,會導(dǎo)致索引層級加深,需要增加額外的磁盤尋址

6.產(chǎn)品舉例

新浪:http://sina.lt/
百度:http://dwz.cn/
0x3:http://0x3.me/
MRW:http://mrw.so/

    新浪長地址轉(zhuǎn)短地址,使用結(jié)果如下:

    https://www.zhihu.com/question/20103344 生成的短地址為:am7a

    

    

      https://www.kanzhun.com/employee/gsl1194828/1587907702/生成的短地址為:am7c

  

  使用短鏈接去請求頁面:

    

總結(jié)

以上是生活随笔為你收集整理的长地址URL转短地址URL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。