諶頏
摘 要:本文通過對WEB瀏覽器訪問網(wǎng)絡(luò)資源特性的研究,將瀏覽器緩存技術(shù)應(yīng)用到下載軟件系統(tǒng),提出一種新的基于圖片資源緩存的下載軟件設(shè)計(jì)方法,可實(shí)現(xiàn)多線程、斷點(diǎn)續(xù)傳、限速等功能,改進(jìn)了傳統(tǒng)軟件下載圖片時的不足。測試結(jié)果表明,該設(shè)計(jì)具備良好的穩(wěn)定性和可行性,圖片資源下載速度較傳統(tǒng)軟件有了較大提升。
關(guān)鍵詞:多線程;斷點(diǎn)續(xù)傳;下載;圖片緩存
中圖分類號:TP301 文獻(xiàn)標(biāo)識碼:A
Abstract:Based on the characteristics of web browsers to access network resources,the study applies the browser cache technology into the download software and puts forward a new download software design method based on image resource cache,which can achieve the functions of multi-thread transferring,broken-point continuingly-transferring and download rate restriction,etc.,and improve the image download through the traditional software.The test results show that the design has good stability and feasibility,and the image download rate is greatly increased.
Keywords:multi-thread;broken-point continuingly-transferring;download;image cache
1 引言(Introduction)
互聯(lián)網(wǎng)的飛速發(fā)展促進(jìn)了網(wǎng)絡(luò)資源爆炸式成長。用戶通常使用瀏覽器獲取網(wǎng)絡(luò)資源信息,而通過下載軟件下載資源則成為用戶最普遍的應(yīng)用[1],主流的下載軟件國內(nèi)有迅雷、快車,國外有Orbit、TuoTu和電驢等。
研究瀏覽器訪問網(wǎng)絡(luò)資源的特點(diǎn)發(fā)現(xiàn),為了提高網(wǎng)頁訪問速度,通常它會采用累積式加速的方法,即將曾經(jīng)訪問過的網(wǎng)頁內(nèi)容,如圖片、cookie等存放到本地的緩存區(qū)域,當(dāng)有訪問請求時,瀏覽器將首先搜索該目錄。如果內(nèi)容已存在,則直接從緩存中讀取內(nèi)容,以此達(dá)到提高訪問速度的目的。本課題基于IE瀏覽器緩存機(jī)制,將該技術(shù)應(yīng)用到下載軟件系統(tǒng)的設(shè)計(jì)中,提出了一種基于圖片資源緩存的下載軟件設(shè)計(jì)方法,改進(jìn)了傳統(tǒng)軟件下載圖片資源的不足。
2 主要技術(shù)原理分析(Main technical principle
analysis)
2.1 線程與線程同步
本系統(tǒng)采用了線程技術(shù),與進(jìn)程相比,線程的主要特點(diǎn)有:輕型實(shí)體,獨(dú)立調(diào)度,可并發(fā)執(zhí)行,共享進(jìn)程資源[2]。由于線程很“輕”,故線程的切換非常迅速而且開銷小,并發(fā)執(zhí)行和共享資源方面優(yōu)于進(jìn)程。
線程同步的主要任務(wù)是對多個相關(guān)進(jìn)程在執(zhí)行次序上進(jìn)行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進(jìn)程能有效地共享資源和相互合作[3],從而使程序的執(zhí)行具有可再現(xiàn)性。
2.2 圖片緩存下載機(jī)制
基于瀏覽器緩存機(jī)制,用戶下載網(wǎng)頁圖片資源時,可以先查找緩存區(qū)域。如果目標(biāo)圖片已經(jīng)存在,則從緩存中下載;如果不存在,則從遠(yuǎn)程服務(wù)器下載。本文所述方法采用基于IE瀏覽器緩存機(jī)制實(shí)現(xiàn),具體步驟在第五部分詳細(xì)闡述。
2.3 下載限速原理
本文提到的限速是指下載客戶端的限速,而并非服務(wù)器端的限速。由于網(wǎng)絡(luò)資源下載會占用較大帶寬,必須對下載流量進(jìn)行限制。本設(shè)計(jì)采用線程休眠來減少流量請求,從而實(shí)現(xiàn)流量限制。
3 多線程下載軟件系統(tǒng)設(shè)計(jì)(Multi-threaded
download software system design)
3.1 系統(tǒng)整體框架
系統(tǒng)基于.NET平臺開發(fā),采用面向?qū)ο蟮姆椒ㄅc雙層架構(gòu)并行的設(shè)計(jì)理念。雙層結(jié)構(gòu)包括表示層與邏輯層。邏輯層提供一切邏輯上的處理,如下載、切割文件等;表示層是用戶的功能界面。在分層架構(gòu)的思想指導(dǎo)下,邏輯層與表示層具有較小的關(guān)聯(lián)性,易于后期的維護(hù)和修改。
3.2 系統(tǒng)核心類交互關(guān)系及功能
本系統(tǒng)采用面向?qū)ο蟮木幊趟枷?,所有核心的代碼都由類構(gòu)成。系統(tǒng)下載類主要有下載模型DownloadBase、基于FTP下載的類FTPDownload、基于HTTP下載的類HttpDownload、基于P2P下載的類P2PDownload。其中DownloadBase為其他三個類的父類,繼承關(guān)系如圖1所示。
4 功能實(shí)現(xiàn)(Function implementation)
4.1 基于HTTP與FTP多線程斷點(diǎn)續(xù)傳核心技術(shù)實(shí)現(xiàn)
本文以FTP為例闡述斷點(diǎn)續(xù)傳實(shí)現(xiàn)過程。當(dāng)程序運(yùn)行時,根據(jù)URL啟動多條線程連接FTP服務(wù)器,出于避開防火墻的考慮,連接方式采用消極模式。當(dāng)客戶端連接至FTP服務(wù)器時,發(fā)送RETR命令以獲取FTP上的文件。此過程并不是將文件數(shù)據(jù)一次性傳輸給客戶端,而是一步步傳輸。一般一次傳輸數(shù)據(jù)的大小即為緩存下載的大小,并且每條線程負(fù)責(zé)不同的數(shù)據(jù)段,每個數(shù)據(jù)段的大小除最后一條線程外都相等。獲取到數(shù)據(jù)后,客戶端再將數(shù)據(jù)從內(nèi)存中多線程并發(fā)寫入到硬盤。
4.2 斷點(diǎn)續(xù)傳具體實(shí)現(xiàn)方法
斷點(diǎn)續(xù)傳指的是在用戶暫停下載時,系統(tǒng)應(yīng)保存已經(jīng)下載時的數(shù)據(jù),并記錄暫停下載時數(shù)據(jù)寫到的位置[4];當(dāng)用戶重新啟動下載時,系統(tǒng)能自動下載剩余尚未完成的數(shù)據(jù)。斷點(diǎn)續(xù)傳主要用于下載較大文件。
4.3 下載限速算法
由于多線程技術(shù)可能會占用大量的網(wǎng)絡(luò)帶寬,影響用戶其他的網(wǎng)絡(luò)活動[5],因此要對下載流量進(jìn)行限制。本設(shè)計(jì)使用線程休眠技術(shù)實(shí)現(xiàn)流量限制[6],其流程圖如圖2所示。
具體實(shí)現(xiàn)如下:
假設(shè)使用N條線程下載遠(yuǎn)程文件F,每條線程所使用的下載緩存大小設(shè)為S字節(jié),并且獲取S字節(jié)所需實(shí)際時間為T毫秒,限速目標(biāo)值為V',則線程具體休眠時間的算法如下:
步驟1:求出理想的線程休眠時間T'=S/V',比較T與T'的大小。若T>=T',則表示獲取S字節(jié)的緩存所需時間大于理想休眠時間。換言之,當(dāng)前下載速度慢于限速目標(biāo)值V',無須進(jìn)行限速操作;反之,如果T 步驟2:由于T 步驟3:由于是使用多線程下載,即N條線程并發(fā)下載,因此,每條線程下載休眠時間應(yīng)為TN=Tx/N毫秒。 4.4 IE圖片緩存下載的實(shí)現(xiàn) 本設(shè)計(jì)中的圖片緩存下載技術(shù)使用基于IE瀏覽器緩存機(jī)制來實(shí)現(xiàn),其流程圖如圖3所示。由于采用了圖片緩存下載技術(shù),下載速度有了極大的提高,最好的情況下將達(dá)到硬盤的讀寫速度,如22M/S。 4.5 網(wǎng)頁圖片識別篩選功能 傳統(tǒng)下載軟件在下載網(wǎng)頁圖片時,往往是將所有圖片下載,而實(shí)際上用戶只需要下載感興趣的圖片。基于此,本設(shè)計(jì)增加了網(wǎng)頁圖片識別篩選功能模型。該模型將圖片的長寬大小范圍設(shè)定在300×300—1600×1600,以此作為用戶選擇下載的條件。基于此篩選模型下載到符合要求的圖片準(zhǔn)確率比較高,一般可高達(dá)88%,其分析詳見5.3節(jié)。 5 運(yùn)行分析與測試(Application analysis and test) 5.1 多線程斷點(diǎn)續(xù)傳下載的測試 本節(jié)對多線程斷點(diǎn)續(xù)傳功能進(jìn)行測試,測試資源是在互聯(lián)網(wǎng)任意選取的6個遠(yuǎn)程資源文件,所得測試數(shù)據(jù)見表1。從表1中可知6個目標(biāo)資源均成功下載至本地,且文件完整,說明本設(shè)計(jì)的多線程斷點(diǎn)續(xù)傳下載技術(shù)已經(jīng)實(shí)現(xiàn)成功。 5.2 圖片緩存下載技術(shù)性能分析 本文4.4節(jié)介紹了IE圖片緩存下載技術(shù)的實(shí)現(xiàn)方法,本節(jié)就對該技術(shù)的性能與迅雷軟件進(jìn)行對比分析。本實(shí)驗(yàn)的數(shù)據(jù)源是從互聯(lián)網(wǎng)上任意選取20個網(wǎng)頁,實(shí)驗(yàn)中對比了兩種下載軟件的性能,結(jié)果見表2。在全部緩存到本地的情況下,緩存下載技術(shù)下載速度較傳統(tǒng)下載技術(shù)有了很大的改進(jìn)。 依據(jù)表2,可得兩種方法下載時間比較的柱形圖,如圖4所示。 從圖4中可明顯地看到,相同的圖片資源下載,運(yùn)用了緩存技術(shù)的下載軟件下載耗時很小。對比二者,下載差距如圖5所示。 從中可以看到,當(dāng)下載網(wǎng)頁中26張圖片的時候,迅雷下載耗時是圖片緩存下載技術(shù)的3500多倍,即使在差距最小的情況下,迅雷下載耗時也是后者的200多倍。由實(shí)驗(yàn)分析可知,圖片緩存下載技術(shù)無論是在下載速度上,還是在占用本地資源上,較傳統(tǒng)下載軟件有較大優(yōu)勢。 5.3 網(wǎng)頁圖片識別篩選準(zhǔn)確率分析 本實(shí)驗(yàn)使用了表2的20個網(wǎng)頁進(jìn)行識別篩選測試,其結(jié)果如圖6所示。 由圖可知,20個網(wǎng)頁中有15個識別率高達(dá)100%,有4個識別率超過50%,只有1個識別率為0。從所選用的20個網(wǎng)頁來看,本圖片篩選模型平均準(zhǔn)確率達(dá)到了88%。 結(jié)合此識別模型與圖片緩存下載技術(shù),可形成一個完整的下載方案:一方面提高了識別用戶目標(biāo)圖片的準(zhǔn)確度,另一方面下載的速度有著質(zhì)的飛躍。 6 結(jié)論(Conclusion) 本設(shè)計(jì)運(yùn)用了下載限速、斷點(diǎn)續(xù)傳、多線程、緩存下載等技術(shù),取得了良好的實(shí)現(xiàn)效果,最大限度利用了帶寬,提高了下載效率。針對目前主流下載軟件存在的不足,提出基于瀏覽器緩存特性實(shí)現(xiàn)的圖片緩存下載方法,顯著改善了圖片資源下載速度。 參考文獻(xiàn)(References) [1] 周學(xué)威,閆鑫,趙櫸云,等.基于SOCKET的多線程下載工具的開發(fā)[J].電子測試, 2011(08):104-106. [2] 楊代慶,王志蘋,王星,等.一種斷點(diǎn)續(xù)傳的多線程新聞組抓取方法及存儲結(jié)構(gòu)[J]. 現(xiàn)代圖書情報(bào)技術(shù),2011(02):29-33. [3] 眭俊華,劉慧娜,王建鑫,等.多核多線程技術(shù)綜述[J].計(jì)算機(jī)應(yīng)用,2016(06):239-242. [4] 王莉敏,梁正和,段全鋒.基于HTML5大文件斷點(diǎn)續(xù)傳的實(shí)現(xiàn)方案[J].計(jì)算機(jī)與現(xiàn)代化,2016(03):91-95. [5] 王楓,羅家融.Linux下多線程Socket通訊的研究與應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2004(16):106-109. 作者簡介: 諶 頏(1980-),男,碩士,高級工程師.研究領(lǐng)域:網(wǎng)絡(luò)信息系統(tǒng),圖像識別,數(shù)據(jù)挖掘,云計(jì)算,個性化推薦技術(shù).