諶頏



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