本申請(qǐng)要求于2014年5月22日遞交的發(fā)明名稱為“一種預(yù)獲取系統(tǒng)和方法”申請(qǐng)?zhí)枮?4/285,204的美國(guó)非臨時(shí)專利申請(qǐng)的在先申請(qǐng)優(yōu)先權(quán),該在先申請(qǐng)的內(nèi)容以引入的方式并入本文。
技術(shù)領(lǐng)域
本發(fā)明涉及緩存管理的系統(tǒng)和方法,尤其涉及一種預(yù)獲取系統(tǒng)和方法。
背景技術(shù):
在現(xiàn)今的企業(yè)世界,全球范圍內(nèi)存在地理上分散的遠(yuǎn)端辦公室,所述遠(yuǎn)端辦公室有集中的總部和相對(duì)較少的數(shù)據(jù)中心。可以通過廣域網(wǎng)(wide area network,WAN)在全球范圍內(nèi)的多個(gè)遠(yuǎn)端辦公室間共享所述數(shù)據(jù)中心的數(shù)據(jù)。因?yàn)閹捰邢?,WAN并不可靠。同時(shí),應(yīng)用對(duì)帶寬的要求越來(lái)越高,這間接導(dǎo)致了對(duì)文件的簡(jiǎn)單操作的性能問題,例如,讀和寫操作。
應(yīng)用使用文件共享協(xié)議。為了提升使用這些協(xié)議時(shí)的性能,安裝中間緩存設(shè)備,以緩存對(duì)象。緩存可以為讀緩存和寫緩存,其緩存數(shù)據(jù)以獲得更好的用戶體驗(yàn),提供更好的數(shù)據(jù)一致性。數(shù)據(jù)緩存是將內(nèi)容臨時(shí)存儲(chǔ)在網(wǎng)絡(luò)邊緣側(cè)的機(jī)制,以在用戶再次存取所述內(nèi)容時(shí)減少帶寬使用量、降低服務(wù)器負(fù)載以及感知到的延遲。緩存可以應(yīng)用于各種不同的網(wǎng)絡(luò)實(shí)現(xiàn)中,例如,在內(nèi)容分發(fā)網(wǎng)絡(luò)(content distribution networks,CDNs)、企業(yè)網(wǎng)、因特網(wǎng)服務(wù)提供方(internet service provider,ISP)網(wǎng)絡(luò)等。一般來(lái)說(shuō),緩存通過如下方式進(jìn)行:獲取內(nèi)容以響應(yīng)存取所述內(nèi)容的客戶端,將所述內(nèi)容存儲(chǔ)在緩存中一段時(shí)間,當(dāng)所述客戶端嘗試再次存取所述內(nèi)容時(shí)直接從所述緩存中提供所述內(nèi)容。
通用Internet文件系統(tǒng)(common internet file system,CIFS)等協(xié)議多次讀取和寫入數(shù)據(jù),比較繁復(fù)。同樣,當(dāng)多個(gè)用戶嘗試存取同一數(shù)據(jù)時(shí),如超文本傳輸協(xié)議(hypertext transfer protocol,HTTP)等協(xié)議一遍又一遍地生成同樣的數(shù)據(jù)。應(yīng)用也對(duì)同樣的文件操作(打開、讀取和關(guān)閉)進(jìn)行多次迭代。緩存設(shè)備通過進(jìn)行數(shù)據(jù)緩存和預(yù)獲取以執(zhí)行此操作。當(dāng)用戶表現(xiàn)有打開或讀取文件的興趣時(shí),可以發(fā)起數(shù)據(jù)預(yù)獲取。如果數(shù)據(jù)在后端文件服務(wù)器中被修改,用戶會(huì)接入緩慢,因?yàn)楸恍薷牡臄?shù)據(jù)在網(wǎng)絡(luò)中流動(dòng)。又如,在用戶存取所述數(shù)據(jù)之前,所述設(shè)備的管理員手動(dòng)預(yù)加載所述數(shù)據(jù)。但是,這容易發(fā)生錯(cuò)誤,且具有不確定性。
技術(shù)實(shí)現(xiàn)要素:
一種預(yù)獲取文件的實(shí)施例方法包括:解析項(xiàng)目文件,以產(chǎn)生解析后的項(xiàng)目文件;從所述解析后的項(xiàng)目文件中提取多個(gè)文件,以產(chǎn)生文件列表。所述方法還包括:緩存設(shè)備通過網(wǎng)絡(luò)在文件服務(wù)器中根據(jù)所述文件列表檢索所述多個(gè)文件,將所述多個(gè)文件存儲(chǔ)至緩存中。
一種打開文件的實(shí)施例方法包括:當(dāng)客戶端發(fā)起只打開項(xiàng)目文件或多個(gè)文件的子集時(shí),緩存設(shè)備通過網(wǎng)絡(luò)在文件服務(wù)器中檢索緩存中與所述項(xiàng)目文件關(guān)聯(lián)的所述多個(gè)文件,將所述多個(gè)文件存儲(chǔ)至所述緩存設(shè)備的緩存中。所述方法還包括:所述緩存設(shè)備從用戶處接收文件打開請(qǐng)求,以打開第一文件,其中,所述多個(gè)文件包括所述第一文件;從所述緩存中讀取所述第一文件。
一種緩存設(shè)備實(shí)施例包括:處理器和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于存儲(chǔ)所述處理器執(zhí)行的程序。所述程序包括執(zhí)行以下操作的指令:解析項(xiàng)目文件,以產(chǎn)生解析后的項(xiàng)目文件;從所述解析后的項(xiàng)目文件中提取多個(gè)文件,以產(chǎn)生文件列表。所述程序還包括執(zhí)行以下操作的指令:通過網(wǎng)絡(luò)在文件服務(wù)器中根據(jù)所述文件列表檢索所述多個(gè)文件;將所述多個(gè)文件存儲(chǔ)至緩存中。
上述寬泛地概括了本發(fā)明實(shí)施例的特征,以便能夠更好地理解本發(fā)明以下詳細(xì)描述。以下將對(duì)本發(fā)明實(shí)施例的其他特征與優(yōu)點(diǎn)即本發(fā)明權(quán)利要求書的主題進(jìn)行描述。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,所公開的概念和特定實(shí)施例易被用作修改或設(shè)計(jì)其他實(shí)現(xiàn)與本發(fā)明相同的目的的結(jié)構(gòu)或過程的基礎(chǔ)。本領(lǐng)域的技術(shù)人員還應(yīng)當(dāng)意識(shí)到,這種等效構(gòu)造不脫離所附權(quán)利要求書所闡述的本發(fā)明的精神和范圍。
附圖說(shuō)明
為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)在參考下文結(jié)合附圖進(jìn)行的描述,其中:
圖1示出了一種預(yù)獲取的網(wǎng)絡(luò)實(shí)施例;
圖2示出了另一種預(yù)獲取的網(wǎng)絡(luò)實(shí)施例;
圖3示出了用于緩存文件的消息圖;
圖4A至4D示出了容器文件的實(shí)施例;
圖5示出了一種預(yù)獲取的系統(tǒng)實(shí)施例;
圖6示出了一種預(yù)獲取的方法實(shí)施例的流程圖;
圖7示出了另一種預(yù)獲取的方法實(shí)施例的流程圖;
圖8示出了一種通用計(jì)算機(jī)系統(tǒng)的實(shí)施例的方框圖。
除非另有指示,否則不同圖中的對(duì)應(yīng)標(biāo)號(hào)和符號(hào)通常指代對(duì)應(yīng)部分。繪制各圖是為了清楚地說(shuō)明實(shí)施例的相關(guān)方面,因此未必是按比例繪制的。
具體實(shí)施方式
首先應(yīng)理解,盡管下文提供一項(xiàng)或多項(xiàng)實(shí)施例的說(shuō)明性實(shí)施方案,但所公開的系統(tǒng)和/或方法可使用任何數(shù)目的技術(shù)來(lái)實(shí)施,無(wú)論該技術(shù)是當(dāng)前已知還是現(xiàn)有的。本發(fā)明決不應(yīng)限于下文所說(shuō)明的說(shuō)明性實(shí)施方案、附圖和技術(shù),包括本文所說(shuō)明并描述的示例性設(shè)計(jì)和實(shí)施方案,而是可在所附權(quán)利要求書的范圍以及其等效物的完整范圍內(nèi)修改。
遠(yuǎn)端辦公室遍布世界。從集中服務(wù)器傳輸?shù)臄?shù)據(jù)受廣域網(wǎng)(wide area networks,WANs)的時(shí)延和帶寬限制的影響,所述廣域網(wǎng)通常比局域網(wǎng)(local area network,LAN)慢。但是,WAN用戶希望擁有LAN一樣的用戶體驗(yàn)。
為了提高用戶體驗(yàn)質(zhì)量,當(dāng)用戶通過對(duì)文件發(fā)起第一次讀取表現(xiàn)出對(duì)所述文件的興趣時(shí),中間緩存設(shè)備發(fā)起預(yù)獲取所述文件。通常,在打開所述文件或讀取第一個(gè)數(shù)據(jù)塊之后,發(fā)起預(yù)獲取。但是,用戶傾向于對(duì)文件的邏輯組或數(shù)據(jù)集合關(guān)聯(lián)成的項(xiàng)目進(jìn)行操作。每個(gè)項(xiàng)目包含少數(shù)至多個(gè)文件。如果所述文件集合在一起,則所述用戶傾向于打開所述關(guān)聯(lián)文件中的一個(gè)文件之后就打開所述關(guān)聯(lián)文件中的一些文件。
邏輯上歸在一起的文件可以形成項(xiàng)目文件或容器文件。項(xiàng)目文件包含關(guān)于文件位置和文件名的元數(shù)據(jù)。所述項(xiàng)目文件的格式可以是基于Makefile的文本文件,對(duì)于如Visual Studio或AutoCAD等應(yīng)用是基于可擴(kuò)展標(biāo)記語(yǔ)言(extensible markup language,XML)的,或者為任何其他的格式,例如,批處理文件。當(dāng)遠(yuǎn)端用戶通過WAN存取所述項(xiàng)目文件時(shí),他可能會(huì)打開所述項(xiàng)目中的不止一個(gè)文件。因?yàn)榭色@得所述項(xiàng)目文件中的大部分文件具體信息,本實(shí)施例的緩存系統(tǒng)包含解析所述項(xiàng)目文件、在文件和/或目錄上執(zhí)行預(yù)獲取操作的基礎(chǔ)結(jié)構(gòu)。因?yàn)榇嬖诙鄠€(gè)項(xiàng)目文件格式不同的應(yīng)用,基礎(chǔ)結(jié)構(gòu)中的插件呈現(xiàn)多種格式,其中,不同的插件處理不同類型的項(xiàng)目。這些插件解析各自的格式,提取路徑名和目錄的列表。將該信息提供給預(yù)獲取引擎,所述預(yù)獲取引擎在所述用戶實(shí)際發(fā)起打開或讀取所述文件中的一個(gè)文件之前,預(yù)獲取所述文件??梢詫⑺霾寮ㄟ^通用語(yǔ)言基礎(chǔ)結(jié)構(gòu)(common language infrastructure,CLI)或其他方式加載到所述緩存引擎中。插件管理器直接更新其可用插件的數(shù)據(jù)庫(kù),因此,對(duì)所請(qǐng)求的項(xiàng)目文件的操作可以傳遞到正確的插件上。例如,應(yīng)用特定的而不是基于協(xié)議的插件。AutoCAD、Eclipse和Corel等應(yīng)用可以以不同的方式優(yōu)化,即使它們?cè)赪AN中工作于相同的協(xié)議。
圖1示出了支持文件預(yù)獲取的網(wǎng)絡(luò)環(huán)境290。如圖所示,所述網(wǎng)絡(luò)環(huán)境290包括文件服務(wù)器292、緩存設(shè)備296、網(wǎng)絡(luò)294和客戶端302。所述文件服務(wù)器292可以是任意用于存儲(chǔ)文件的組件或者組件的集合。所述文件服務(wù)器292可以為存儲(chǔ)待被遠(yuǎn)端客戶端存取的文件的遠(yuǎn)端服務(wù)器,例如,所述客戶端302。
所述網(wǎng)絡(luò)294可以為WAN、LAN或者其他類型的網(wǎng)絡(luò)。所述客戶端302通過所述網(wǎng)絡(luò)294存取所述文件服務(wù)器292上的文件。
所述緩存設(shè)備296可以是任意代表所述客戶端302從所述文件服務(wù)器292上獲取文件且緩存所述文件以使所述文件可以被所述客戶端302存取的組件或組件的集合。所述緩存設(shè)備296可以包括用于獲取文件的獲取模塊298和用于存儲(chǔ)文件的緩存300。通過所述網(wǎng)絡(luò)294從所述文件服務(wù)器292上下載文件。所述獲取模塊298通過所述網(wǎng)絡(luò)294從文件服務(wù)器上獲取文件至所述緩存300,通過所述網(wǎng)絡(luò)294從所述文件服務(wù)器292中預(yù)獲取文件至所述客戶端302,從所述緩存300中預(yù)獲取文件至所述客戶端302。
所述客戶端302可以對(duì)應(yīng)于存取所述文件服務(wù)器292上存儲(chǔ)的文件的任意實(shí)體(例如,個(gè)人、辦公室、公司等)或?qū)嶓w組(例如,用戶組等)。在此處提供的實(shí)施例中,所述緩存設(shè)備296可以在所述客戶端302再次存取所述文件之前從所述文件服務(wù)器292預(yù)獲取文件和/或文件更新,將預(yù)獲取的文件存儲(chǔ)在所述緩存300中。可以基于所述客戶端302打開的項(xiàng)目預(yù)獲取所述文件,一旦所述文件被所述客戶端302再次存取,所述緩存300可以直接為所述客戶端302提供所述文件。
本說(shuō)明書中提供的預(yù)獲取技術(shù)的實(shí)施例適用于將存儲(chǔ)在網(wǎng)絡(luò)一側(cè)的文件在所述網(wǎng)絡(luò)的另一側(cè)緩存的任意網(wǎng)絡(luò)環(huán)境,,所述網(wǎng)絡(luò)包括內(nèi)容分發(fā)網(wǎng)絡(luò)(content distributed networks,SDNs)、企業(yè)網(wǎng)、因特網(wǎng)服務(wù)提供方(internet service provider,ISP)網(wǎng)絡(luò)、廣域優(yōu)化網(wǎng)絡(luò)等。圖2示出了包括通過WAN通信的數(shù)據(jù)中心和分辦公室的網(wǎng)絡(luò)環(huán)境100。數(shù)據(jù)中心102通過WAN106耦合到分辦公室104上,所述數(shù)據(jù)中心102包含文件服務(wù)器112,所述文件服務(wù)器112可以為Windows或Unix文件服務(wù)器。所述文件服務(wù)器112存儲(chǔ)了可以被遠(yuǎn)程存取的文件。數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器110和所述數(shù)據(jù)中心102的磁帶備份區(qū)114中。
WAN優(yōu)化(WAN optimization,WANO)區(qū)116進(jìn)行WAN優(yōu)化,以提高所述WAN106的數(shù)據(jù)效率。WANO技術(shù)包括優(yōu)化吞吐量、帶寬要求、時(shí)延、協(xié)議優(yōu)化以及擁塞避免。
防火墻118保護(hù)所述數(shù)據(jù)中心。所述防火墻118是控制入網(wǎng)和出網(wǎng)流量的網(wǎng)絡(luò)安全系統(tǒng)。
路由器120在所述數(shù)據(jù)中心102和所述WAN106間交互,而路由器122在所述WAN106和所述分辦公室104間交互。所述路由器120和122在所述數(shù)據(jù)中心102和所述分辦公室104間轉(zhuǎn)發(fā)數(shù)據(jù)包。
在所述分辦公室104中,所述WAN106耦合到所述路由器122。防火墻124保護(hù)所述分辦公室104,所述防火墻124控制入網(wǎng)和出網(wǎng)流量,為所述分辦公室104提供保護(hù)。
WANO區(qū)126接收所述數(shù)據(jù),將所述數(shù)據(jù)傳播到客戶端128中,所述WANO區(qū)126進(jìn)行優(yōu)化,以提高所述WAN106中的效率。并且,所述WANO區(qū)126包括用于存儲(chǔ)數(shù)據(jù)的緩存。所述WANO區(qū)116和126可以是用于為所述WAN106提供接口的任意設(shè)備,可以包括預(yù)獲取模塊和/或其他用于執(zhí)行本說(shuō)明書提供的獲取和優(yōu)化技術(shù)的組件。
關(guān)于預(yù)獲取的更多信息在2014年3月14日遞交的發(fā)明名稱為“基于存取模式的智能文件預(yù)獲取”申請(qǐng)?zhí)枮?4/231,508的美國(guó)專利申請(qǐng)中已作討論,該在先申請(qǐng)的內(nèi)容以引入的方式并入本文。
圖3示出了提前讀取單個(gè)文件的緩存的消息圖140?;趩蝹€(gè)文件進(jìn)行提前讀取緩存,其中各個(gè)文件都被緩存。當(dāng)存在多個(gè)文件時(shí),例如,存在項(xiàng)目時(shí),一次性預(yù)獲取所有文件。在實(shí)施例中,可以一次性預(yù)獲取多個(gè)文件。當(dāng)客戶端嘗試存取文件時(shí)開始該過程,以提示緩存設(shè)備將文件請(qǐng)求發(fā)送至文件服務(wù)器,以獲取所述文件的版本??蛻舳?42將認(rèn)證和連接請(qǐng)求發(fā)送至緩存設(shè)備144,所述緩存設(shè)備144認(rèn)證所述認(rèn)證和連接請(qǐng)求或?qū)⑺稣J(rèn)證和連接請(qǐng)求轉(zhuǎn)發(fā)至服務(wù)器146。作為回應(yīng),所述服務(wù)器146發(fā)送響應(yīng)至所述緩存設(shè)備144,其中,所述緩存設(shè)備144將所述響應(yīng)轉(zhuǎn)發(fā)至所述客戶端142。
接下來(lái),所述客戶端142打開文件1,請(qǐng)求打開所述文件。將該請(qǐng)求發(fā)送至所述緩存設(shè)備144,傳遞至所述服務(wù)器146,所述服務(wù)器146響應(yīng)所述緩存設(shè)備144,將所述響應(yīng)發(fā)送至所述客戶端142,然后所述文件被打開。
所述緩存設(shè)備144請(qǐng)求從所述服務(wù)器146中讀取并提前讀取文件1。在所述服務(wù)器146上進(jìn)行讀取和磁盤輸入/輸出(input/output,IO),將數(shù)據(jù)發(fā)送至所述緩存設(shè)備144。所述緩存設(shè)備144將所讀取的數(shù)據(jù)發(fā)送至所述客戶端142。并且,所述緩存設(shè)備144代表所述客戶端142進(jìn)行預(yù)獲取,進(jìn)行提前讀取。
所述客戶端142再次打開文件2,請(qǐng)求文件2的響應(yīng)。和文件1一樣,所述客戶端142為讀取和提前讀取文件2接收數(shù)據(jù),將這個(gè)請(qǐng)求發(fā)送至所述緩存設(shè)備144,傳遞至所述服務(wù)器146,所述服務(wù)器146響應(yīng)所述緩存設(shè)備144,將所述響應(yīng)發(fā)送至所述客戶端142,然后所述文件被打開。
通常,文件在邏輯上以文件集合的形式歸在一起,作為項(xiàng)目文件或容器文件。所述項(xiàng)目或容器文件包含項(xiàng)目中文件的名稱和位置。例如,所述項(xiàng)目或容器文件為:.NET項(xiàng)目文件(.vcxproj)、Eclipse項(xiàng)目文件(.project)、Rstudio(.rproj)、Qt項(xiàng)目文件(.pro)、AutoCAD項(xiàng)目文件(.wdp,.wdd)、Unix/Linus Makefile、A4desk(.a4p)、Adobe設(shè)備(.adcp)、Anjuta集成開發(fā)環(huán)境(integrated developer environment,IDE)(anjuta)、Borland developer studio(.bdsproj)、C#項(xiàng)目文件(.scproj)和Delphi項(xiàng)目(.dproj)。圖4A至4D示出了項(xiàng)目文件的一些示例。圖4A示出了.NET項(xiàng)目文件150,圖4B示出了C#項(xiàng)目文件160,圖4C示出了Borland項(xiàng)目文件170,圖4D示出了Borlandfile文件180。
圖5示出了用于預(yù)獲取項(xiàng)目文件的系統(tǒng)190。當(dāng)打開容器文件時(shí)或當(dāng)打開容器文件的子文件之一時(shí),預(yù)獲取文件。所述系統(tǒng)190檢測(cè)文件集合,緩存關(guān)聯(lián)的項(xiàng)目文件中的所有文件。當(dāng)用戶請(qǐng)求打開項(xiàng)目文件時(shí),打開模塊200接收該請(qǐng)求,將所述請(qǐng)求傳遞至插件管理器202中。所述請(qǐng)求可以為打開項(xiàng)目文件、與項(xiàng)目文件關(guān)聯(lián)的文件或與項(xiàng)目文件不關(guān)聯(lián)的文件。例如,緩存中已存儲(chǔ)有所述文件。或者,緩存中未存儲(chǔ)所述文件。
所述插件管理器202管理插件192,所述插件管理器202管理所述插件192,確定待讀取的文件是否是已識(shí)別的項(xiàng)目文件、與已識(shí)別的插件關(guān)聯(lián)的文件或兩者都不是。例如,基于專用文件格式確定針對(duì)所述項(xiàng)目文件格式的插件類型。當(dāng)所述文件是項(xiàng)目文件或項(xiàng)目文件的一部分時(shí),所述插件管理器202解析所述請(qǐng)求至正確的插件上,所述正確的插件解析對(duì)應(yīng)的項(xiàng)目文件。所述插件包括針對(duì)適當(dāng)容器文件的解析器,提取待獲取的文件。所述插件從所述項(xiàng)目文件中提取信息,解析所述信息,準(zhǔn)備完整文件名的列表,將所述列表傳遞到所述插件管理器中。
然后,將所述文件列表傳遞至預(yù)獲取模塊208中,獲取所述文件,將所述文件保存在緩存中。緩存模塊212預(yù)獲取這些文件,將這些文件存儲(chǔ)在本地永久緩存,即緩存214中。通過WAN206在遠(yuǎn)端服務(wù)器204中檢索所述文件,以將所述文件存儲(chǔ)在所述緩存214中。所述文件存儲(chǔ)在所述本地永久緩存214中。
當(dāng)用戶請(qǐng)求讀取這些文件之一時(shí),所述讀取模塊210在所述緩存模塊212中檢索所述文件。如果所述文件以當(dāng)前的版本存儲(chǔ)在所述緩存214中,所述緩存模塊212從所述緩存214讀取所述文件,將數(shù)據(jù)傳遞至所述讀取模塊210,所述讀取模塊210迅速做出響應(yīng)。當(dāng)所述文件的所述當(dāng)前版本未存儲(chǔ)在緩存中時(shí),可以通過所述網(wǎng)絡(luò)從所述遠(yuǎn)端服務(wù)器下載所述文件。
圖6示出了用于預(yù)獲取項(xiàng)目文件的方法的流程圖220。首先,在步驟222中,用戶發(fā)起打開文件。例如,所述用戶打開存儲(chǔ)在遠(yuǎn)端服務(wù)器上的文件。所述文件可以為項(xiàng)目文件、項(xiàng)目文件的一部分或者與項(xiàng)目文件不關(guān)聯(lián)的文件。
接下來(lái),在步驟224中,復(fù)制打開信息,將所述打開信息發(fā)送至插件管理器。將所述打開信息發(fā)送至所述插件管理器,以打開所述文件和所述項(xiàng)目文件中的其他文件。
然后,在步驟226中,所述插件管理器進(jìn)行驗(yàn)證。所述插件管理器確定所述插件是項(xiàng)目文件還是項(xiàng)目文件的一部分。當(dāng)待打開的文件不是項(xiàng)目文件的一部分時(shí),只打開所述文件。當(dāng)所述待打開的文件是項(xiàng)目文件或項(xiàng)目文件的一部分時(shí),預(yù)獲取所述項(xiàng)目文件中的文件,因?yàn)樗鲇脩粼趯?lái)很可能會(huì)打開它們。所述插件管理器確定打開所述文件的合適插件。
在步驟228中,所述插件管理器確定是否有合適的插件。所述插件管理器可以下載、更新或刪除插件,以獲得所述合適的插件。在步驟230中,當(dāng)所述合適的插件不可用時(shí),所述系統(tǒng)不執(zhí)行任何操作;在步驟232中,當(dāng)所述插件可用時(shí),所述插件解析所述項(xiàng)目文件。
在步驟234中,在解析所述項(xiàng)目文件之后,所述插件提取待預(yù)獲取文件的列表。例如,預(yù)獲取所述項(xiàng)目文件中所有的文件。或者,只預(yù)獲取所述文件中的一部分。
接下來(lái),在步驟236中,預(yù)獲取模塊預(yù)獲取所述項(xiàng)目文件。預(yù)獲取在步驟234中確定的所述列表中的文件,將其存儲(chǔ)在永久緩存238中。之后所述文件可以從所述緩存中存取。
當(dāng)所述用戶之后想打開文件時(shí),可以從所述永久緩存238中快速讀取所述文件。在步驟240中,為了讀取已在緩存中存儲(chǔ)的文件,所述用戶發(fā)起讀取文件1。
在步驟242中,讀取模塊驗(yàn)證所述文件的最新副本存儲(chǔ)在緩存238中。在所述緩存中可能存在所述文件的舊版本,所述舊版本不是最近的版本。例如,可以在所述遠(yuǎn)端服務(wù)器上更新所述文件的新版本,但是這個(gè)新版本還未下載至所述緩存中。然后,在步驟244中,確定緩存中的本地副本是否是最新版本。當(dāng)最新副本未存儲(chǔ)在所述緩存中時(shí),例如,當(dāng)所述文件已被更新,或者如果所述文件從未被預(yù)獲取,在步驟248中,所述系統(tǒng)讀取所述文件。在步驟250中,通過所述WAN讀取所述文件。這會(huì)導(dǎo)致時(shí)延。
當(dāng)最新副本存儲(chǔ)在所述緩存中時(shí),在步驟246中,所述系統(tǒng)從所述永久緩存238中讀取所述文件。這可以快速地執(zhí)行。
圖7示出了用于預(yù)獲取文件的方法的流程圖310。首先,在步驟340中,用戶發(fā)起打開文件。
在步驟316中,緩存設(shè)備確定所述文件是否是容器文件。這可以通過確定所述文件是否是專有容器文件實(shí)現(xiàn)。當(dāng)所述文件是項(xiàng)目文件的一部分時(shí),可以存取所述項(xiàng)目文件。當(dāng)所述文件不是項(xiàng)目文件或項(xiàng)目文件的一部分時(shí),所述緩存設(shè)備繼續(xù)執(zhí)行步驟314。當(dāng)所述文件是項(xiàng)目文件的一部分或是項(xiàng)目文件時(shí),所述緩存設(shè)備繼續(xù)步驟318。
在步驟314中,所述緩存設(shè)備確定所述文件是否已在緩存中。當(dāng)所述文件已在所述緩存中,所述系統(tǒng)繼續(xù)執(zhí)行步驟326。另一方面,當(dāng)所述文件未存儲(chǔ)在所述緩存中時(shí),所述系統(tǒng)繼續(xù)執(zhí)行步驟324。
在步驟324中,所述緩存設(shè)備通過網(wǎng)絡(luò)獲取單個(gè)文件。所述網(wǎng)絡(luò)可以為WAN或其他網(wǎng)絡(luò)。通過所述網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器讀取所述單個(gè)文件。并且,將所述文件保存在緩存中,以便后來(lái)存取。
在步驟326中,所述緩存設(shè)備確定所述緩存中的所述文件的版本是否是所述文件的最新版本。在步驟328中,當(dāng)所述緩存中所述文件的版本是所述文件的最新版本時(shí),所述系統(tǒng)從所述緩存中讀取所述文件。在步驟324中,當(dāng)所述緩存中的所述文件的版本不是所述文件的最新版本時(shí),所述系統(tǒng)通過所述網(wǎng)絡(luò)獲取所述文件。此時(shí),所述文件打開時(shí)有一定的時(shí)延。所述文件也被保存在所述緩存中,以便后來(lái)存取。
在步驟318中,所述緩存設(shè)備確定針對(duì)所述項(xiàng)目文件的合適插件,且確定所述插件可用。插件管理器檢查所述容器文件,確定是否有合適的插件可用??梢孕略鲂碌牟寮⒏卢F(xiàn)有的插件或必要時(shí)刪除插件。在步驟330中,當(dāng)所述插件不可用時(shí),所述系統(tǒng)不預(yù)獲取所述項(xiàng)目文件。當(dāng)有合適的插件可用時(shí),所述系統(tǒng)繼續(xù)執(zhí)行步驟320。
在步驟320中,所述緩存設(shè)備從所述容器文件提取所述文件。解析所述容器文件,提取所述文件,以創(chuàng)建文件列表。所述列表可以包含文件名和文件位置。
最后,在步驟322中,通過所述網(wǎng)絡(luò)預(yù)獲取所述文件。然后,當(dāng)所述用戶發(fā)起讀取所述容器文件中的一個(gè)文件時(shí),可以從所述緩存中快速讀取所述文件。
此處使用的術(shù)語(yǔ)“預(yù)獲取文件”指的是在嘗試存取電子文件的客戶端沒有提示的情況下獲取所述電子文件的動(dòng)作。而且,所述術(shù)語(yǔ)“文件”用于寬泛地表示擁有共同的特征或分類的任意對(duì)象(例如,文件內(nèi)容),因此,短語(yǔ)“預(yù)獲取文件”不應(yīng)理解為暗指獲取的所述電子文件等于所述客戶端之前存取的“所述(電子)文件”。例如,所述預(yù)獲取的文件可以為所述客戶端之前存取的電子文件的更新版本。又如,所述預(yù)獲取的文件可以是所述客戶端之前存取的周期性電子文件類型的新實(shí)例,例如,周期收入報(bào)告、日程等。在此例中,所述客戶端沒有存取所述預(yù)獲取的電子文件的任何版本。為了闡述所述概念,假設(shè)所述客戶端是編輯周二體育版面的定稿的報(bào)紙編輯,所述緩存設(shè)備預(yù)獲取周三體育版面的定稿的電子版本。短語(yǔ)“預(yù)獲取文件”應(yīng)被理解為包括情況:即使周三體育版面的內(nèi)容與周二體育版面的內(nèi)容不同,因?yàn)?在本實(shí)例中)“所述文件”指的是與周二和周三體育版面相關(guān)聯(lián)的類型或分類,而不是周二體育版面的具體內(nèi)容。
圖8是處理系統(tǒng)270的方框圖,該處理系統(tǒng)可以用來(lái)實(shí)現(xiàn)本文公開的設(shè)備和方法。特定裝置可利用所有所示的組件或所述組件的僅一子集,且裝置之間的集成程度可能不同。此外,設(shè)備可以包括部件的多個(gè)實(shí)例,例如多個(gè)處理單元、處理器、存儲(chǔ)器、發(fā)射器、接收器等。處理系統(tǒng)可以包括配備一個(gè)或多個(gè)輸入/輸出設(shè)備,例如揚(yáng)聲器、麥克風(fēng)、鼠標(biāo)、觸摸屏、按鍵、鍵盤、打印機(jī)、顯示器等的處理單元。另外,處理系統(tǒng)270可配備一個(gè)或多個(gè)輸出設(shè)備,例如,揚(yáng)聲器、打印機(jī)、顯示器等。處理單元可以包括中央處理器(CPU)274、存儲(chǔ)器276、大容量存儲(chǔ)器設(shè)備278、視頻適配器280以及連接至總線的I/O接口288。
總線可以是任意類型的若干總線架構(gòu)中的一個(gè)或多個(gè),包括存儲(chǔ)總線或存儲(chǔ)控制器、外設(shè)總線、視頻總線等等。CPU 274可包括任意類型的電子數(shù)據(jù)處理器。存儲(chǔ)器276可包括任何類型的系統(tǒng)存儲(chǔ)器,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步DRAM(SDRAM)、只讀存儲(chǔ)器(ROM)或其組合等等。在實(shí)施例中,存儲(chǔ)器可包括在開機(jī)時(shí)使用的ROM以及執(zhí)行程序時(shí)使用的程序和數(shù)據(jù)存儲(chǔ)器的DRAM。
大容量存儲(chǔ)器設(shè)備278可包括任意類型的存儲(chǔ)設(shè)備,其用于存儲(chǔ)數(shù)據(jù)、程序和其它信息,并使這些數(shù)據(jù)、程序和其它信息通過總線訪問。大容量存儲(chǔ)器設(shè)備278可包括如下項(xiàng)中的一種或多種:固態(tài)磁盤、硬盤驅(qū)動(dòng)器、磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器等等。
視頻適配器280以及I/O接口288提供接口以將外部輸入以及輸出裝置耦合到處理單元上。如所圖示,輸入以及輸出裝置的實(shí)例包含耦合到顯示卡上的顯示器以及耦合到I/O接口上的鼠標(biāo)/鍵盤/打印機(jī)。其它裝置可以耦合到處理單元上,并且可以利用額外的或較少的接口卡。舉例來(lái)說(shuō),串行接口卡(未圖示)可以用于為打印機(jī)提供串行接口。
處理單元還包含一個(gè)或多個(gè)網(wǎng)絡(luò)接口284,所述網(wǎng)絡(luò)接口284可以包括例如以太網(wǎng)電纜或其類似者等有線鏈路,和/或用以接入節(jié)點(diǎn)或不同網(wǎng)絡(luò)的無(wú)線鏈路。網(wǎng)絡(luò)接口284允許處理單元經(jīng)由網(wǎng)絡(luò)與遠(yuǎn)程單元通信。舉例來(lái)說(shuō),網(wǎng)絡(luò)接口可以經(jīng)由一個(gè)或多個(gè)發(fā)射器/發(fā)射天線以及一個(gè)或多個(gè)接收器/接收天線提供無(wú)線通信。在一個(gè)實(shí)施例中,所述處理單元與局域網(wǎng)或者廣域網(wǎng)耦合以進(jìn)行數(shù)據(jù)處理以及與遠(yuǎn)端設(shè)備比如其他處理單元、因特網(wǎng)、遠(yuǎn)端存儲(chǔ)設(shè)備等通信。
雖然本發(fā)明中已提供若干實(shí)施例,但應(yīng)理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其他特定形式來(lái)體現(xiàn)。本發(fā)明的實(shí)例應(yīng)被視為說(shuō)明性而非限制性的,且本發(fā)明并不限于本文本所給出的細(xì)節(jié)。例如,各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實(shí)施。
此外,在不脫離本發(fā)明的范圍的情況下,各種實(shí)施例中描述和說(shuō)明為離散或單獨(dú)的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術(shù)或方法進(jìn)行組合或合并。展示或論述為彼此耦合或直接耦合或通信的其它項(xiàng)也可以采用電方式、機(jī)械方式或其它方式通過某一接口、設(shè)備或中間部件間接地耦合或通信。其他變化、替代和改變的示例可以由本領(lǐng)域的技術(shù)人員在不脫離本文精神和所公開的范圍的情況下確定。