本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別地涉及一種在瀏覽器中處理短鏈接的方法和裝置。
背景技術(shù):
在時(shí)下的互聯(lián)網(wǎng)開發(fā)中,在基于用戶原創(chuàng)內(nèi)容UGC(User Generated Content)或基于位置服務(wù)LBS(Location Based Service)的web或移動(dòng)端產(chǎn)品的內(nèi)容中多見超鏈接(又叫長鏈接)。但是,大多數(shù)超鏈接的字符長度過長且明文顯示,不利于傳輸安全和數(shù)據(jù)存儲(chǔ),同時(shí)也不利于搜索引擎的抓取,繼而影響到搜索引擎優(yōu)化SEO(Search Engine Optimization)。
為了解決上述的問題,大部分的開發(fā)團(tuán)隊(duì)是通過使用命名規(guī)則以促使鏈接盡可能地縮短,但是鏈接的長度仍不能滿足最優(yōu)化要求。另外,以百度云盤等為代表的較多平臺(tái),采用的多為服務(wù)端腳本實(shí)現(xiàn)的域名系統(tǒng)DNS(Domain Name System)重定向的方案,其對服務(wù)端的攔截和解析能力較為依賴。并且,現(xiàn)有的方案在對超鏈接進(jìn)行重定向時(shí),會(huì)直接跳轉(zhuǎn)至新請求的頁面,因此會(huì)有突兀感。
根據(jù)前述的描述可以看出,伴隨著超鏈接的逐步增多,為現(xiàn)有的web或移動(dòng)端產(chǎn)品帶來了極大的不便,主要表現(xiàn)在:
1、鏈接在傳輸過程中明文,且過長;
2、過長的鏈接不利于搜索引擎抓?。?/p>
3、過長的鏈接不利于數(shù)據(jù)存儲(chǔ)和讀取的高效進(jìn)行;
4、過于依賴服務(wù)端腳本及DNS重定向解析;
5、短鏈接在加載并重定向過程中,頁面會(huì)有突兀感。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種在瀏覽器中處理短鏈接的方法和裝置,能夠解決鏈接在傳輸過程因字符串過長造成的效率低下和在存儲(chǔ)環(huán)節(jié)中因過長造成的讀寫性能低下問題,提高了傳輸環(huán)節(jié)的安全性,避免了鏈接在變化跳轉(zhuǎn)時(shí)的過多等待和用戶體驗(yàn)上的突兀感。
為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種在瀏覽器中處理短鏈接的方法。
一種在瀏覽器中處理短鏈接的方法,包括:接收短鏈接;根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,所述預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
可選地,當(dāng)針對接收的短鏈接,不存在對應(yīng)的長鏈接,則顯示報(bào)錯(cuò)頁面或保持先前加載的頁面。
可選地,在根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接的過程中向用戶發(fā)出提示。
可選地,對于一給定的長鏈接,其對應(yīng)的短鏈接是該長鏈接的哈希值,所述哈希值通過給定的哈希函數(shù)獲得。
可選地,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫。
可選地,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫時(shí),通過MD5進(jìn)行加密處理。
根據(jù)本發(fā)明的另一方面,提供了一種在瀏覽器中處理短鏈接的裝置。
一種在瀏覽器中處理短鏈接的裝置,包括:短鏈接接收模塊,用于接收短鏈接;短鏈接處理模塊,用于根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,所述預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
可選地,當(dāng)針對接收的短鏈接,不存在對應(yīng)的長鏈接,則顯示報(bào)錯(cuò)頁面或保持先前加載的頁面。
可選地,還包括:提示模塊,用于在根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接的過程中向用戶發(fā)出提示。
可選地,對于一給定的長鏈接,其對應(yīng)的短鏈接是該長鏈接的哈希值,所述哈希值通過給定的哈希函數(shù)獲得。
可選地,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫。
可選地,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫時(shí),通過MD5進(jìn)行加密處理。
根據(jù)本發(fā)明的又一方面,提供了一種在瀏覽器中處理短鏈接的裝置。
一種在瀏覽器中處理短鏈接的裝置,包括:存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器存儲(chǔ)指令;所述處理器執(zhí)行所述指令用于:接收短鏈接;根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,所述預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
根據(jù)本發(fā)明的技術(shù)方案,通過將長鏈接加工處理成符合條件的短鏈接,并根據(jù)短鏈接查找并訪問對應(yīng)的長鏈接,可以解決鏈接在傳輸過程因字符串過長造成的效率低下和在存儲(chǔ)環(huán)節(jié)中因過長而造成的讀寫性能低下問題。本發(fā)明中,根據(jù)預(yù)定的規(guī)則,通過哈希散列算法對任意目標(biāo)長鏈接進(jìn)行短鏈接的加工生產(chǎn),并將長鏈接、短鏈接及其映射關(guān)系存儲(chǔ)到數(shù)據(jù)存儲(chǔ)模塊中,并且在數(shù)據(jù)存儲(chǔ)時(shí),還可以預(yù)先使用MD5算法進(jìn)行加密處理,最后通過中間頁面進(jìn)行鏈接的精準(zhǔn)重定向,既提高了傳輸環(huán)節(jié)的安全性,同時(shí)利于搜索引擎抓取,并且避免了鏈接在變化跳轉(zhuǎn)時(shí)的過多等待和用戶體驗(yàn)上的突兀感。
附圖說明
附圖用于更好地理解本發(fā)明,不構(gòu)成對本發(fā)明的不當(dāng)限定。其中:
圖1是根據(jù)本發(fā)明實(shí)施例的在瀏覽器中處理短鏈接的方法的主要步驟示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)圖;
圖3是根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)流程示意圖;
圖4是本發(fā)明一個(gè)具體實(shí)施例的實(shí)現(xiàn)過程示意圖;
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的在瀏覽器中處理短鏈接的裝置的主要模塊示意圖;
圖6是根據(jù)本發(fā)明另一實(shí)施例的在瀏覽器中處理短鏈接的裝置的主要模塊示意圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的示范性實(shí)施例做出說明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,可以對這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對公知功能和結(jié)構(gòu)的描述。
圖1是根據(jù)本發(fā)明實(shí)施例的在瀏覽器中處理短鏈接的方法的主要步驟示意圖。如圖1所示,本發(fā)明的在瀏覽器中處理短鏈接的方法主要包括如下的步驟S11至步驟S12。
步驟S11:接收短鏈接;
步驟S12:根據(jù)預(yù)定的映射關(guān)系確定短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
根據(jù)本發(fā)明的技術(shù)方案,當(dāng)針對接收的短鏈接,不存在對應(yīng)的長鏈接,則顯示報(bào)錯(cuò)頁面或保持先前加載的頁面。
并且,在根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接的過程中向用戶發(fā)出提示。
其中,對于一給定的長鏈接,其對應(yīng)的短鏈接是該長鏈接的哈希值,所述哈希值通過給定的哈希函數(shù)獲得。所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫。
此外,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫時(shí),通過MD5進(jìn)行加密處理。
圖2是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)圖。為了解決鏈接在傳輸過程因字符串過長造成的效率低下和在存儲(chǔ)環(huán)節(jié)中因過長而造成的讀寫性能低下問題,本發(fā)明將長鏈接加工處理成符合條件的短鏈接,并根據(jù)短鏈接查找并訪問對應(yīng)的長鏈接。如圖2所示,本發(fā)明實(shí)施例的系統(tǒng)主要包括:短鏈接加工模塊、短鏈接分轉(zhuǎn)模塊、加解密模塊和Redis模塊。下面介紹各個(gè)模塊的功能實(shí)現(xiàn)。
短鏈接加工模塊:基于預(yù)定的算法,例如哈希(散列)算法將長鏈接轉(zhuǎn)換和生產(chǎn)為滿足預(yù)設(shè)要求的短鏈接,從而將長鏈接和生成的短鏈接建立一一對應(yīng)的映射關(guān)系。然后,為生成的短鏈接建立映射索引,并將短鏈接與長鏈接和兩者的映射關(guān)系存儲(chǔ)到數(shù)據(jù)存儲(chǔ)模塊。同時(shí),該模塊還可以負(fù)責(zé)完成根據(jù)短鏈接索引出長鏈接的工作。
短鏈接分轉(zhuǎn)模塊:該模塊可被實(shí)現(xiàn)為一個(gè)中轉(zhuǎn)頁面,通過執(zhí)行查詢腳本,向數(shù)據(jù)存儲(chǔ)模塊發(fā)起詢問,并獲取精準(zhǔn)查詢并匹配的長鏈接以進(jìn)行加載。同時(shí),該模塊在加載長鏈接的過程中會(huì)予以用戶提示(例如“正在進(jìn)行頁面跳轉(zhuǎn),請等待”)并告知系統(tǒng)正在匹配跳轉(zhuǎn)。如此,即可克服由于頁面的突然跳轉(zhuǎn)所帶來的突兀感。
加解密模塊:為了保證短鏈接和長鏈接的安全性,在上述的存儲(chǔ)和讀寫過程中,還可以使用MD5對短鏈接和長鏈接進(jìn)行加解密的處理,從而可以避免出現(xiàn)明文字符鏈接。
數(shù)據(jù)存儲(chǔ)模塊,可使用的數(shù)據(jù)庫例如:Redis、SQL server、MySQL或MongoDB等,以用于數(shù)據(jù)的存儲(chǔ)和讀寫,以便將長鏈接與生成的短鏈接建立映射索引,并將短鏈接與長鏈接進(jìn)行存儲(chǔ)。同時(shí)該模塊也負(fù)責(zé)配合完成根據(jù)短鏈接索引出長鏈接的工作。
圖3是根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)流程示意圖。如圖3所示,短鏈接加工模塊根據(jù)預(yù)定的規(guī)則,通過哈希散列算法對任意目標(biāo)長鏈接進(jìn)行短鏈接的加工生產(chǎn),并將長鏈接、短鏈接及其映射關(guān)系存儲(chǔ)到數(shù)據(jù)存儲(chǔ)模塊(例如:Redis)中,在數(shù)據(jù)存儲(chǔ)時(shí),還可以預(yù)先使用MD5算法進(jìn)行加密處理。
當(dāng)瀏覽器通過HTTP請求或HTTPS請求訪問短鏈接時(shí),瀏覽器即開始加載該特定的短鏈接,待加載完畢后,即顯示為短鏈接分轉(zhuǎn)頁面。
短鏈接分轉(zhuǎn)頁面,在短鏈加載完成后,會(huì)提示用戶正在前往目標(biāo)資源。此時(shí),短鏈接分轉(zhuǎn)頁面中的JS腳本開始向數(shù)據(jù)存儲(chǔ)模塊(例如:Redis)發(fā)起詢問,數(shù)據(jù)存儲(chǔ)模塊根據(jù)短鏈接嘗試索引對應(yīng)的長鏈接。如果索引到有效的長鏈接,則將目標(biāo)長鏈接返回至短鏈接分轉(zhuǎn)頁面,以便短鏈接分轉(zhuǎn)頁面可以根據(jù)返回的長鏈接再次進(jìn)行加載,并在加載完成后顯示長鏈接對應(yīng)的頁面內(nèi)容;如果未能索引到有效的長鏈接,則可能包含如下兩種情況:
情況1、該短鏈接為初始化打開的短連接,也就是瀏覽器之前并無其他加載內(nèi)容,此時(shí)會(huì)給用戶展示一個(gè)錯(cuò)誤頁面,提示資源找不到,稍后重試;
情況2、如果是瀏覽器本身就有一些頁面加載,通過點(diǎn)擊了某一個(gè)按鈕觸發(fā)了這個(gè)短鏈接繼而有映射動(dòng)作,但未能從數(shù)據(jù)存儲(chǔ)模塊中索引到有效鏈接,則保持瀏覽器之前加載的頁面不變,也就是瀏覽器不做跳轉(zhuǎn)。
圖4是本發(fā)明一個(gè)具體實(shí)施例的實(shí)現(xiàn)過程示意圖。如圖4所示,當(dāng)通過瀏覽器訪問短鏈接,如short.abc.com/atf時(shí),瀏覽器會(huì)將該短鏈接對應(yīng)的頁面加載并顯示,之后,短鏈接分轉(zhuǎn)模塊將根據(jù)該短鏈接從數(shù)據(jù)存儲(chǔ)模塊Redis中檢索對應(yīng)的長鏈接,例如可以檢索到對應(yīng)的長鏈接為:http://abc.ef.com/qwer5678%2344hkfkf。則將檢索到的長鏈接返回至短鏈接分轉(zhuǎn)頁面,以加載對應(yīng)的內(nèi)容并顯示。如此,即可通過中間頁面的查詢,實(shí)現(xiàn)精準(zhǔn)重定向。
本發(fā)明的方案可同時(shí)適用于PC/iOS/Android系統(tǒng)下的web瀏覽器應(yīng)用中,同時(shí),降低了開發(fā)者對長鏈接存儲(chǔ)時(shí)對數(shù)據(jù)庫的開銷,提高了存儲(chǔ)時(shí)的便捷性,對鏈接傳播時(shí)的安全存儲(chǔ)以及搜索引擎友好性帶來的極大提升。
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的在瀏覽器中處理短鏈接的裝置的主要模塊示意圖。如圖5所示,本發(fā)明的在瀏覽器中處理短鏈接的裝置50主要包括短鏈接接收模塊51和短鏈接處理模塊52。
短鏈接接收模塊51用于接收短鏈接;短鏈接處理模塊52用于根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,所述預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
根據(jù)本發(fā)明的技術(shù)方案,當(dāng)針對接收的短鏈接,不存在對應(yīng)的長鏈接,則顯示報(bào)錯(cuò)頁面或保持先前加載的頁面。
另外,本發(fā)明的在瀏覽器中處理短鏈接的裝置50還可以包括提示模塊,用于在根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接的過程中向用戶發(fā)出提示。
其中,對于一給定的長鏈接,其對應(yīng)的短鏈接是該長鏈接的哈希值,所述哈希值通過給定的哈希函數(shù)獲得。所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫。
并且,所述短鏈接和所述長鏈接及其映射關(guān)系被存儲(chǔ)到數(shù)據(jù)庫時(shí),通過MD5進(jìn)行加密處理。
圖6是根據(jù)本發(fā)明另一實(shí)施例的在瀏覽器中處理短鏈接的裝置的主要模塊示意圖。如圖6所示,本發(fā)明的在瀏覽器中處理短鏈接的裝置60主要包括存儲(chǔ)器61和處理器62。
其中,存儲(chǔ)器61用于存儲(chǔ)指令;處理器62執(zhí)行所述指令用于:接收短鏈接;根據(jù)預(yù)定的映射關(guān)系確定所述短鏈接對應(yīng)的長鏈接,當(dāng)存在對應(yīng)的長鏈接,則根據(jù)該長鏈接加載對應(yīng)的頁面,其中,所述預(yù)定的映射關(guān)系定義了短鏈接和長鏈接的對應(yīng)關(guān)系,并且短鏈接通過索引關(guān)聯(lián)到其對應(yīng)的長鏈接。
根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,通過將長鏈接加工處理成符合條件的短鏈接,并根據(jù)短鏈接查找并訪問對應(yīng)的長鏈接,可以解決鏈接在傳輸過程因字符串過長造成的效率低下和在存儲(chǔ)環(huán)節(jié)中因過長而造成的讀寫性能低下問題。本發(fā)明中,根據(jù)預(yù)定的規(guī)則,通過哈希散列算法對任意目標(biāo)長鏈接進(jìn)行短鏈接的加工生產(chǎn),并將長鏈接、短鏈接及其映射關(guān)系存儲(chǔ)到數(shù)據(jù)存儲(chǔ)模塊中,并且在數(shù)據(jù)存儲(chǔ)時(shí),還可以預(yù)先使用MD5算法進(jìn)行加密處理,最后通過中間頁面進(jìn)行鏈接的精準(zhǔn)重定向,既提高了傳輸環(huán)節(jié)的安全性,同時(shí)利于搜索引擎抓取,并且避免了鏈接在變化跳轉(zhuǎn)時(shí)的過多等待和用戶體驗(yàn)上的突兀感。
上述具體實(shí)施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。