加以限制。
[0070]若準(zhǔn)備對網(wǎng)頁進(jìn)行壓縮,則可以從網(wǎng)頁庫中提取準(zhǔn)備壓縮的多個文檔。
[0071]步驟102,從所述多個文檔中查找內(nèi)容相似的多個目標(biāo)文檔;
[0072]本發(fā)明實(shí)施例中,在對多張網(wǎng)頁進(jìn)行壓縮時(shí),利用網(wǎng)頁之間的相似性,將相似的網(wǎng)頁放在一塊,按照一定的算法重組這些相似的網(wǎng)頁,然后進(jìn)行壓縮,進(jìn)而提高壓縮率。
[0073]在具體實(shí)現(xiàn)中,可以采用字符串的相似對比、最大相似公共子串、基于pattern(模式)等方法,計(jì)算多個文檔的URL的相似性,當(dāng)相似性超過預(yù)設(shè)的相似性閾值時(shí),確認(rèn)多個文檔為多個目標(biāo)文檔。
[0074]以pattern為例,如圖2所示,在某BBS(Bulletin Board System,論壇)的網(wǎng)頁中,網(wǎng)頁按照功能可以劃分為多個區(qū)域,該頁面可以劃分為導(dǎo)航塊(I)、垃圾塊(2、4)、翻頁塊(3)、標(biāo)題塊(5)、作者信息塊¢)、發(fā)表日期塊(7)、正文塊(8),存在大量相似的內(nèi)容。
[0075]其中,導(dǎo)航塊可以位于網(wǎng)頁頁眉頂部,或者banner(網(wǎng)頁的橫幅廣告)下部,用于指向網(wǎng)頁的信息欄目。
[0076]垃圾塊可以為與網(wǎng)頁主題相關(guān)度很低的頁面元素所在的區(qū)域,例如“發(fā)帖”、“回復(fù)”等功能按鈕。
[0077]翻頁塊可以為指示翻頁的區(qū)域。標(biāo)題塊可以為網(wǎng)頁主題的標(biāo)題(例如圖2所示的“安全瀏覽器聚集黑色星期四”)所在的區(qū)域。
[0078]作者信息塊為記載該網(wǎng)頁主題作者信息的區(qū)域。正文塊為記載該網(wǎng)頁主題正文的區(qū)域。
[0079]其URL 為:
[0080]http://bbs.XXX.com/forum-99-2, html ;
[0081 ] http: //bbs.XXX.com/forum-99-3, html。
[0082]其中,“99”、“2”被識別出為頁碼,以“(\d+) ”作為替換字符,則其URL的pattern為 http: //bbs.XXX.com/forum- (\d+) - (\d+).html,符合這個 pattern 的 URL 所屬的網(wǎng)頁,具有相似性。
[0083]步驟103,根據(jù)所述行號對所述多個目標(biāo)文檔進(jìn)行序列化,獲得一個或多個數(shù)據(jù)塊;
[0084]在具體實(shí)現(xiàn)中,HMTL文檔通常以行為單位進(jìn)行編譯,因此,每行的文檔數(shù)據(jù)為HTML文檔的內(nèi)容本身。
[0085]行一般會設(shè)置有編號,即行號,因此,每個目標(biāo)文檔中具有行號。
[0086]在本發(fā)明實(shí)施例中,可以提取多個目標(biāo)文檔中,行號相同的文檔數(shù)據(jù),將行號相同的文檔數(shù)據(jù)寫入同一個數(shù)據(jù)塊中。
[0087]此外,可以對多個目標(biāo)文檔行號相同的文檔數(shù)據(jù)進(jìn)行編號。
[0088]步驟104,將所述一個或多個數(shù)據(jù)塊進(jìn)行壓縮處理,獲得壓縮對象。
[0089]在實(shí)際應(yīng)用中,可以采用傳統(tǒng)的壓縮算法,如GZip,LZ0, Zlib等,對數(shù)據(jù)塊進(jìn)行壓縮處理,本發(fā)明實(shí)施例對此不加以限制。
[0090]本發(fā)明實(shí)施例針對內(nèi)容相似的多個目標(biāo)文檔,基于行號進(jìn)行序列化,進(jìn)而壓縮,獲得壓縮對象,利用了網(wǎng)頁本身的業(yè)務(wù)特性進(jìn)行壓縮,大大提高了壓縮率,減少了存儲空間的占用。
[0091]應(yīng)用GZip,LZO, Zlib等傳統(tǒng)的壓縮算法對網(wǎng)頁進(jìn)行直接的壓縮,都是基于二進(jìn)制字節(jié)流進(jìn)行的壓縮,如圖3所示,針對網(wǎng)頁301、網(wǎng)頁302、網(wǎng)頁303是逐個進(jìn)行壓縮,按照箭頭方向,先壓縮文檔數(shù)據(jù)“Χχχχχχχχχχχχχχ”、再壓縮文檔數(shù)據(jù)“Yyyyyyyyyyyyyy”,最后壓縮文檔數(shù)據(jù)“Zzzzzzzzzzzzzz”,忽略了網(wǎng)頁本身的業(yè)務(wù)特性,使得壓縮率比較低。
[0092]網(wǎng)頁庫所存儲的網(wǎng)頁,其中包含了:
[0093]1、不同網(wǎng)站使用同一模板生成的大量相似的網(wǎng)頁;
[0094]2、同一網(wǎng)站利用同一個模板生成了大量相似的網(wǎng)頁。
[0095]在這些相似的網(wǎng)頁中,具有大量相同或相似的內(nèi)容,如文檔數(shù)據(jù)“Χχχχχχχχχχχχχχ,,、文檔數(shù)據(jù) “Yyyyyyyyyyyyyy,,和文檔數(shù)據(jù) “Zzzzzzzzzzzzzz,,。
[0096]在本發(fā)明實(shí)施例中,按照網(wǎng)頁本身的業(yè)務(wù)特性,如圖4所示,針對網(wǎng)頁401、網(wǎng)頁402、網(wǎng)頁403按照箭頭方向,將文檔數(shù)據(jù)“Χχχχχχχχχχχχχχ”、文檔數(shù)據(jù)“Yyyyyyyyyyyyyy”和文檔數(shù)據(jù)“Zzzzzzzzzzzzzz”進(jìn)行序列化,獲得多個數(shù)據(jù)塊,再對數(shù)據(jù)塊進(jìn)行壓縮,提高了壓縮率。
[0097]在一種極端情況下,假設(shè)有N (N為正整數(shù))張網(wǎng)頁,每篇文檔內(nèi)部各行都不一樣,N張網(wǎng)頁之間是一模一樣(均為Y byte),每張網(wǎng)頁的壓縮比是X,則傳統(tǒng)壓縮算法壓縮后的空間為 Cl = NxY (byte);
[0098]應(yīng)用本發(fā)明實(shí)施例的序列號壓縮方式,壓縮后的空間為C2 = Υχ+Ω (byte);
[0099]其中,Ω為N張網(wǎng)頁重組的結(jié)構(gòu)化開銷,可以認(rèn)為遠(yuǎn)小于Cl,因此,C2?C1/N。
[0100]當(dāng)然,上述示例是一些極端情況,實(shí)際環(huán)境中還需要考慮壓縮時(shí)的結(jié)構(gòu)性開銷,使用線上實(shí)際數(shù)據(jù)進(jìn)行模擬對比測試,采用本發(fā)明實(shí)施例中基于序列化的壓縮方案與傳統(tǒng)壓縮方案進(jìn)行對比,結(jié)果表明,相比于原來的單張網(wǎng)頁壓縮,基于序列化的壓縮方案,利用了多篇文檔間的相似性,壓縮比可以提高30?45%左右,即平均可節(jié)省30?45%的存儲空間。
[0101]參照圖5,示出了根據(jù)本發(fā)明一個實(shí)施例的一種文檔的解壓方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
[0102]步驟501,提取預(yù)先壓縮的壓縮對象,所述壓縮對象中具有一個或多個數(shù)據(jù)塊;
[0103]在本發(fā)明實(shí)施例中,壓縮對象可以由多個文檔經(jīng)過序列化的壓縮方式壓縮處理獲得。
[0104]壓縮文件中具有一個或多個數(shù)據(jù)塊,該數(shù)據(jù)塊可以根據(jù)文檔數(shù)據(jù)的內(nèi)容標(biāo)識進(jìn)行序列化獲得。
[0105]具體而言,該數(shù)據(jù)塊為多個目標(biāo)文檔中、內(nèi)容標(biāo)識相同的文檔數(shù)據(jù)的集合。
[0106]步驟502,對所述一個或多個數(shù)據(jù)塊進(jìn)行解壓處理;
[0107]在實(shí)際應(yīng)用中,若在先采用傳統(tǒng)的壓縮算法,如GZip,LZO, Zlib等,對數(shù)據(jù)塊進(jìn)行壓縮處理,則在本發(fā)明實(shí)施例中,可以按照該傳統(tǒng)的壓縮算法,如GZip,LZO, Zlib等,對數(shù)據(jù)塊進(jìn)行解壓處理。
[0108]步驟503,根據(jù)行號對解壓處理之后的一個或多個數(shù)據(jù)塊進(jìn)行反序列化,獲得多個目標(biāo)文檔。
[0109]在本發(fā)明實(shí)施例中,反序列化可以指將對象從可以存儲或傳輸?shù)男问睫D(zhuǎn)換為狀態(tài)信息的過程。
[0110]在具體實(shí)現(xiàn)中,可以讀取解壓處理之后的一個或多個數(shù)據(jù)塊中的文檔數(shù)據(jù),其中,文檔數(shù)據(jù)具有編號和行號。
[0111]按照所述編號計(jì)算文檔數(shù)據(jù)所屬的目標(biāo)文檔,將文檔數(shù)據(jù)按照行號寫入該目標(biāo)文檔中,獲得原始的目標(biāo)文檔。
[0112]對于方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作并不一定是本發(fā)明實(shí)施例所必須的。
[0113]參照圖6,示出了根據(jù)本發(fā)明一個實(shí)施例的一種文檔的壓縮裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
[0114]文檔提取模塊601,適于提取預(yù)先存儲的多個文檔;
[0115]目標(biāo)文檔查找模塊602,適于從所述多個文檔中查找內(nèi)容相似的多個目標(biāo)文檔,每個目標(biāo)文檔中具有行號;
[0116]序列化模塊603,適于根據(jù)所述行號對所述多個目標(biāo)文檔進(jìn)行序列化,獲得一個或多個數(shù)據(jù)塊;
[0117]壓縮模塊604,適于將所述一個或多個數(shù)據(jù)塊進(jìn)行壓縮處理,獲得壓縮對象。
[0118]在本發(fā)明的一種可選實(shí)施例中,所述目標(biāo)文檔查找模塊602還可以適于:
[0119]計(jì)算所述多個文檔的URL的相似性;
[0120]當(dāng)所述相似性超過預(yù)設(shè)的相似性閾值時(shí),確認(rèn)所述多個文檔為多個目標(biāo)文檔。
[0121]在本發(fā)明的一種可選實(shí)施例中,所述序列化模塊603還可以適于:
[0122]提取所述多個目標(biāo)文檔中,行號相同的文檔數(shù)據(jù);
[0123]將行號相同的文檔數(shù)據(jù)寫入同一個數(shù)據(jù)塊中。