两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

單頁應(yīng)用中的路由動(dòng)態(tài)加載的制作方法

文檔序號:11333690閱讀:242來源:國知局
單頁應(yīng)用中的路由動(dòng)態(tài)加載的制造方法與工藝

本發(fā)明公開一般涉及單頁應(yīng)用,更具體是,涉及使用單路處理器動(dòng)態(tài)地加載路由和依賴項(xiàng)信息。



背景技術(shù):

單頁應(yīng)用(spa:single-pageapplication)是在客戶端設(shè)備上運(yùn)行并與單一網(wǎng)頁相適應(yīng)的web應(yīng)用。web應(yīng)用是如下應(yīng)用軟件:在web瀏覽器中運(yùn)行,并采用瀏覽器支持的編程語言(例如javascript、html和css的組合)創(chuàng)建,并且依賴web瀏覽器提供web應(yīng)用。spa的目標(biāo)在于,提供更加流暢的用戶體驗(yàn),類似桌面應(yīng)用。當(dāng)spa正在執(zhí)行時(shí),通過spa提供的網(wǎng)頁不在任何點(diǎn)重新加載,也不控制轉(zhuǎn)移到另一個(gè)網(wǎng)頁。

spa開發(fā)的傳統(tǒng)方法包含,在客戶端設(shè)備上執(zhí)行的spa中,可訪問用戶在與spa交互時(shí)所有可選擇的可能的路由(例如url片段)的路由處理器。該傳統(tǒng)方法也涉及包含每個(gè)可能的路由的“依賴項(xiàng)”的spa?!耙蕾図?xiàng)”指代與一個(gè)或多個(gè)路由相關(guān)聯(lián)的每個(gè)模塊(或子應(yīng)用)的文檔。這些模塊文檔包含javascript和css文檔,通常比html文檔大很多。在另一方面,html文檔能夠從web服務(wù)器檢索以響應(yīng)用戶對具體路由的請求。因此,用戶與spa交互經(jīng)常涉及與web服務(wù)器的動(dòng)態(tài)通信。

spa在加載時(shí)間,甚至在請求任何路由之前可訪問所有路由和相關(guān)模塊文檔的一個(gè)優(yōu)點(diǎn)在于,避免了頁面刷新并且頁面瀏覽時(shí)間最小。

spa方法的一個(gè)替代方法是多頁應(yīng)用方法,其中,路由處理通過接收來自在客戶端設(shè)備上執(zhí)行的web應(yīng)用的請求的服務(wù)器實(shí)現(xiàn)。然而,響應(yīng)于每個(gè)用戶請求,需要頁面刷新,引起用戶體驗(yàn)不佳。

然而,該spa方法不是沒有缺點(diǎn)。例如,加載spa的時(shí)間,以及加載所有可能的路由和每個(gè)模塊的文檔的時(shí)間可以很長,尤其是如果路由和模塊文檔的數(shù)量相對較大。如另一個(gè)例子所示,對于大型spa,開發(fā)可在每個(gè)spa加載時(shí)間訪問所有可能的路由以及每個(gè)路由的依賴項(xiàng)的單一路由處理器可以是繁瑣的,尤其是當(dāng)不同的開發(fā)團(tuán)隊(duì)分別開發(fā)與可能的路由的一個(gè)子集相關(guān)聯(lián)的模塊。

一個(gè)可能減少spa方法的缺點(diǎn)的方法是為每個(gè)模塊開發(fā)路由處理器。例如,spa包含可訪問三個(gè)路由的路由處理器:“/profile/”、“/mail/”和“/search/”,但不可訪問這些路由的任何子路由。該路由處理器也可訪問這三個(gè)路由的每一個(gè)的依賴項(xiàng)信息。所以,如果用戶選擇了“/profile/”路由,則檢索到“/profile/”的子路由和相關(guān)依賴項(xiàng)信息,并加載簡檔(profile)模塊。然后,如果該用戶想要訪問路由“/mail/”,則該簡檔模塊的路由處理器將會(huì)返回錯(cuò)誤,因?yàn)樵摵啓n模塊的路由處理器不可訪問任何涉及“/mail/”的路由。因此,為每個(gè)模塊實(shí)現(xiàn)單獨(dú)的路由處理器不允許用戶訪問所有與spa相關(guān)聯(lián)的模塊。

在本節(jié)中描述的方法是可執(zhí)行的方法,但不必是先前設(shè)想或執(zhí)行的方法。因此,除非另有說明,不應(yīng)僅僅憑借在本節(jié)中包含的內(nèi)容而假定本節(jié)所描述的任何方法是現(xiàn)有技術(shù)。

附圖說明

圖中:

圖1是描述了在實(shí)施例中用于在客戶端設(shè)備中處理路由請求的示例系統(tǒng)的框圖;

圖2是描述了在實(shí)施例中用于在客戶端設(shè)備中處理路由請求的示例進(jìn)程的流程圖;

圖3是說明計(jì)算機(jī)系統(tǒng)的框圖,可在其上執(zhí)行本發(fā)明的實(shí)施例。

具體實(shí)施方式

在下面的描述中,為了解釋的目的,提出許多具體細(xì)節(jié)以提供對本發(fā)明的透徹理解。然而,很明顯,本發(fā)明能夠在沒有這些具體細(xì)節(jié)的情況下實(shí)施。在其他例子中,公知的結(jié)構(gòu)和設(shè)備以框圖形式顯示,以避免不必要地模糊本發(fā)明。

總體概述

提供了一種用于路由處理器的技術(shù),其使用加載在單頁應(yīng)用(spa)環(huán)境中的動(dòng)態(tài)路由和依賴項(xiàng)。路由處理器是當(dāng)spa加載在客戶端設(shè)備上時(shí)啟動(dòng)的進(jìn)程。該路由處理器可能最初不可訪問用戶可能請求的至少某些路由。該路由處理器最終接收了請求,其包含與依賴項(xiàng)信息關(guān)聯(lián)的路由,路由與依賴項(xiàng)均不可在客戶端設(shè)備獲得。代替顯示請求路由對路由處理器未知的錯(cuò)誤信息,路由處理器引起請求的路由發(fā)送至服務(wù)器,服務(wù)器用所請求的路由和所請求的路由的依賴項(xiàng)信息做出響應(yīng)。

系統(tǒng)概述

圖1是描述了在實(shí)施例中用于在客戶端設(shè)備上處理路由請求的示例系統(tǒng)100的框圖。系統(tǒng)100包含客戶端設(shè)備110、網(wǎng)絡(luò)120、和服務(wù)器130。雖然在系統(tǒng)100中只描述了一個(gè)客戶端設(shè)備110,但系統(tǒng)100可包含很多客戶端設(shè)備。類似的,雖然在系統(tǒng)100中只描述了一個(gè)服務(wù)器130,但系統(tǒng)110可包含多個(gè)支持客戶端設(shè)備110的服務(wù)器。例如,如果服務(wù)器130出故障或超載,那么來自客戶端設(shè)備110的請求能夠重定向至另一臺(tái)可以響應(yīng)這些請求的服務(wù)器。

客戶端設(shè)備110的例子包含便攜式電腦、平板電腦、智能手機(jī)和臺(tái)式電腦??蛻舳嗽O(shè)備110包含在其上執(zhí)行的主機(jī)應(yīng)用112。主機(jī)應(yīng)用112的一個(gè)例子是構(gòu)成為接受(作為輸入)許多不同域的網(wǎng)址(urls:uniformresourcelocators)的網(wǎng)頁瀏覽器,與一個(gè)或多個(gè)域名服務(wù)器(dnss:domainnameservers)通信以查找urls的ip地址,并和與ip地址相關(guān)聯(lián)的網(wǎng)頁服務(wù)器通信。網(wǎng)頁瀏覽器的例子包含chrome、firefox、safari和internetexplorer。另一個(gè)主機(jī)應(yīng)用112的例子是客戶端側(cè)應(yīng)用,例如移動(dòng)應(yīng)用,其構(gòu)成為與能夠由多個(gè)web服務(wù)器支持的單一web域通信。

網(wǎng)絡(luò)120能夠通過提供在客戶端設(shè)備110與服務(wù)器130之間的數(shù)據(jù)交換的任何介質(zhì)或裝置實(shí)現(xiàn)。網(wǎng)絡(luò)120的例子包含但不限于例如局域網(wǎng)(lan)、廣域網(wǎng)(wan)、以太網(wǎng)或英特網(wǎng),或一個(gè)或多個(gè)陸地、衛(wèi)星、或無線鏈路的網(wǎng)絡(luò)。

服務(wù)器130是一個(gè)組件,其構(gòu)成為處理和響應(yīng)來自主機(jī)應(yīng)用112的請求和在其他客戶端設(shè)備上執(zhí)行的主機(jī)應(yīng)用112的其他實(shí)例(圖1中未描繪)。例如,響應(yīng)于來自主機(jī)應(yīng)用112的請求,服務(wù)器130提供主機(jī)應(yīng)用112進(jìn)行處理以在主機(jī)應(yīng)用112中加載和執(zhí)行單頁應(yīng)用114的文檔和數(shù)據(jù)(用于單頁應(yīng)用114)。

服務(wù)器130存儲(chǔ)或可訪問路由-模塊關(guān)聯(lián)數(shù)據(jù)132,該路由-模塊關(guān)聯(lián)數(shù)據(jù)132將路由(完整的urls或url片段)與數(shù)據(jù)文檔相關(guān)聯(lián)。一個(gè)或多個(gè)數(shù)據(jù)文檔的集合對應(yīng)于spa114基于處理相應(yīng)的數(shù)據(jù)文檔生成的模塊。例如,該關(guān)聯(lián)數(shù)據(jù)可關(guān)聯(lián)(1)路由“/profile/”與用于生成簡檔模塊(或子-應(yīng)用)的數(shù)據(jù)文檔,(2)路由“/search/”與用于生成搜索模塊的數(shù)據(jù)文檔,以及(3)路由“/mail/”與用于生成郵件模塊的數(shù)據(jù)文檔。每個(gè)模塊允許客戶端設(shè)備110的用戶啟動(dòng)確定的動(dòng)作。例如,簡檔模塊可允許用戶觀查看用戶簡檔,編輯用戶簡檔,并且分享用戶簡檔。類似的,搜索模塊可允許用戶啟動(dòng)社交網(wǎng)絡(luò)的搜索,編輯之前的搜索,和保存搜索結(jié)果。類似的,郵件模塊可允許用戶查看所有用戶的電子消息,查看滿足確定標(biāo)準(zhǔn)的電子消息,并創(chuàng)建、發(fā)送、回復(fù)、和轉(zhuǎn)發(fā)電子消息。

模塊的數(shù)據(jù)文檔的例子包含javascript文檔和層疊樣式表(css:cascadingstylesheet)文檔。單一模塊的數(shù)據(jù)文檔也可包含一個(gè)或多個(gè)html文檔。如果單一模塊與多個(gè)路由相關(guān)聯(lián),則每個(gè)路由相對應(yīng)于單一web文檔。例如,簡檔模塊能夠與路由“/profile/view/”、“/profile/edit/”、和“/profile/share/”相關(guān)聯(lián)。因此,相同的javascript文檔和css文檔能夠用于生成三個(gè)不同路由的網(wǎng)頁,但是三個(gè)不同的html文檔(即,三個(gè)路由中的每一個(gè)路由一個(gè)html文檔)能夠與簡檔模塊相關(guān)聯(lián)。當(dāng)選擇相應(yīng)的路由查看時(shí),使用不同的html文檔生成網(wǎng)頁。

服務(wù)器130能夠在軟件、硬件或軟硬件組合中實(shí)現(xiàn)。服務(wù)器130能夠在單一計(jì)算設(shè)備或多個(gè)計(jì)算設(shè)備上實(shí)現(xiàn)。

主機(jī)應(yīng)用112從服務(wù)器130提交了對數(shù)據(jù)的請求(例如,http)。該請求可以由在主機(jī)應(yīng)用112的文本字段中輸入url,并提供輸入(例如,選擇鍵盤上的鍵或語音輸入)的用戶啟動(dòng)?;蛘?,該請求能夠通過用戶選擇在客戶端設(shè)備110上顯示的圖形圖標(biāo)來啟動(dòng)。該請求通過網(wǎng)絡(luò)120傳輸至服務(wù)器130。作為答復(fù),服務(wù)器130發(fā)送html和其他數(shù)據(jù)源,例如javascript文檔和css文檔,至客戶端設(shè)備110。

響應(yīng)于接收html和其他數(shù)據(jù)源,spa114基于典型地作為依賴項(xiàng)加載步驟的一部分被加載的模塊-具體模板文檔而創(chuàng)建文檔對象模型(dom:documentobjectmodel)。spa114啟動(dòng)路由處理器116,這是構(gòu)成為接收和處理路由請求,并根據(jù)特別的路由請求加載適當(dāng)?shù)哪K的進(jìn)程。在多頁應(yīng)用中,該路由處理器在服務(wù)器上實(shí)現(xiàn),而不是在提交路由請求的客戶端上實(shí)現(xiàn)。

路由請求表明是url的片段的路由,例如“/search/”、“/profile/”、或“/mail/”。另外,路由能夠是完整的url,例如“http://www.linkedin.com/search/”。路由請求能夠基于來自用戶的輸入啟動(dòng)。例如,該輸入能夠是用戶選擇的與特別路由相關(guān)聯(lián)的鏈接或按鈕。如另一個(gè)例子,該輸入可以是用戶選擇在鍵盤上的多個(gè)鍵,該鍵可以是實(shí)物的或圖形的?;蛘撸酚烧埱竽軌蜃詣?dòng)啟動(dòng)。例如,如果基于在顯示特別網(wǎng)頁時(shí)經(jīng)常選擇特別路由(例如,“/mail/”)的用戶選擇歷史,該用戶更可能選擇那個(gè)特別路由,那么spa114自動(dòng)啟動(dòng)該路由請求。

示例進(jìn)程

圖2是描述了在實(shí)施例中用于在客戶端設(shè)備上處理路由請求的示例進(jìn)程200的流程圖。進(jìn)程200在客戶端設(shè)備110上進(jìn)行。

在塊210,路由處理器116由spa114啟動(dòng)。路由處理器116能夠啟動(dòng)以響應(yīng)于加載在在主機(jī)應(yīng)用112的數(shù)據(jù)文檔(例如javascript文檔和css文檔)和spa114開啟。最初,路由處理器116可能不可訪問一個(gè)或多個(gè)可供用戶選擇的路由。此外,客戶端設(shè)備110不能存儲(chǔ)任何用于在主機(jī)應(yīng)用112中運(yùn)行模塊的依賴項(xiàng)信息(與一個(gè)或多個(gè)路由相關(guān)聯(lián))。

在塊220,路由處理器116接收表明特別路由的路由請求。該路由請求能夠基于用戶與spa114交互而從spa114接收,交互為例如在客戶端設(shè)備110的屏幕上顯示的按鈕或鏈接的選擇。

在塊230,路由處理器116決定該特別路由不匹配由路由處理器116保持的任何在路由列表中的路由。路由處理器116可只保持單一的路由列表。最初,該路由列表可能是空的。在路由列表中沒有請求的路由表明當(dāng)前加載的模塊(例如,spa114最初或另一個(gè)模塊)不能處理該請求的路由。

在塊240,路由處理器116引起服務(wù)器請求通過網(wǎng)絡(luò)120發(fā)送至服務(wù)器130。該服務(wù)器請求能夠是http請求并且可包括完整的url。例如,當(dāng)該路由請求能夠是url片段(例如,“/search/”),該服務(wù)器請求能夠是整個(gè)相關(guān)聯(lián)的url(“http://www.linkedin.com/search/”)。

在塊250,路由處理器116從服務(wù)器130接收一個(gè)或多個(gè)路由和一個(gè)或多個(gè)依賴項(xiàng)的集合,例如javascript文檔、css文檔、和圖像,用于相對應(yīng)于請求的路由的模塊。模塊被設(shè)計(jì)成單機(jī)應(yīng)用。使用模塊作為應(yīng)用體系結(jié)構(gòu)的一部分提供了許多優(yōu)點(diǎn),例如減少主應(yīng)用的大小,將相關(guān)功能封裝到單個(gè)模塊中,在能夠?qū)我荒K加載到不同的主機(jī)應(yīng)用方面的可重用性,并且將第三方模塊集成到主應(yīng)用中。

如果從塊250中的服務(wù)器130接收了多個(gè)路由,則多個(gè)路由中的一個(gè)或多個(gè)能夠是請求的路由的“子”路由。例如,如果該請求的路由是“/profile/”,則連同請求的路由從服務(wù)器130接收的另外的路由能夠是“/profile/edit”、“/profile/view”、和“/profile/share”。這樣的“子”路由可能或可能不與另一模塊相關(guān)聯(lián)。因此,能夠服務(wù)請求的路由“/profile/”的相同的模塊也能夠服務(wù)請求的路由“/profile/edit/”。

塊250也涉及將請求的路由和任何其他路由,例如該請求的路由的子路由插入路由處理器116保留的路由列表。如果當(dāng)路由處理器116引起服務(wù)器請求發(fā)送時(shí)(在塊240中)該路由列表不為空,,則該路由列表在插入從服務(wù)器130接收的路由之前能夠被清空。

在塊260,響應(yīng)于接收該請求的路由,該請求的路由被重新觸發(fā),該步驟涉及路由處理器116識(shí)別在路由列表中的請求的路由。

在塊270,與請求的路由相關(guān)聯(lián)的模塊的合適的依賴項(xiàng)被識(shí)別并被加載至spa114。塊270能夠通過主機(jī)應(yīng)用112實(shí)現(xiàn)。每個(gè)模塊(或子-應(yīng)用)包括處理(同時(shí)加載)任何未來路由請求的分離路由處理器。因此,路由處理器116不再是當(dāng)前路由處理器,除非再加載其相關(guān)聯(lián)的模塊或應(yīng)用。

在塊280,該加載的模塊處理該請求的路由并基于該請求的路由在客戶端設(shè)備110的屏幕上顯示適當(dāng)?shù)臄?shù)據(jù)。例如,如果請求的路由是“/profile/”,則加載用于客戶端設(shè)備110顯示用戶的簡檔信息的模塊。塊280也可包括spa114,或加載的模塊,如果web內(nèi)容沒有事先下載至塊250中的客戶端設(shè)備110,則從服務(wù)器130檢索web內(nèi)容。

未知路由

如之前關(guān)于塊230描述的,用戶可能會(huì)啟動(dòng)在路由處理器的路由列表中找不到的請求的路由。此處提到的這樣的路由為“未知路由”。要處理這樣的場景,spa的典型實(shí)現(xiàn)包含在路由處理器的路由列表中的通配符路由。如果該請求的路由不匹配在路由列表中的任何其他路由,則該通配符路由能夠是作為全能性的“/*”。該通配符路由能夠與函數(shù)調(diào)用或消息顯示有關(guān),例如“404()”,表明該路由處理器調(diào)用404錯(cuò)誤函數(shù),引起對用戶顯示錯(cuò)誤消息。未知路由調(diào)用錯(cuò)誤函數(shù)。如果路由處理器以特別順序掃描其路由列表,則該通配符路由能夠放置在路由列表的末尾,以確保如果該請求的路由是未知的,則只調(diào)用錯(cuò)誤函數(shù)。

在實(shí)施例中,代替將錯(cuò)誤函數(shù)與通配符路由相關(guān)聯(lián),而是將尋徑函數(shù)與通配符路由相關(guān)聯(lián)。因此,如果該請求的路由未知(例如,如果在路由處理器116到達(dá)該通配符路由之前,該請求的路由沒有在路由列表中找到),則路由處理器116調(diào)用該尋徑函數(shù)(此處提及為“通配符尋徑函數(shù)”)。該通配符尋徑函數(shù)決定是否有任何模塊或子-應(yīng)用在主機(jī)應(yīng)用112中映射至請求的路由。如果有,則該通配符尋徑函數(shù)為請求的路由加載依賴項(xiàng)。否則,該通配符尋徑函數(shù)引起服務(wù)器請求(包含該請求的路由)通過網(wǎng)絡(luò)120傳遞至服務(wù)器130。

如果路由出現(xiàn)在路由列表中,則意味著那個(gè)路由的那個(gè)依賴項(xiàng)信息可能已經(jīng)加載或存儲(chǔ)在客戶端設(shè)備110中。然而,該通配符尋徑函數(shù)邏輯無論如何都能夠在路由中執(zhí)行。

服務(wù)器130從客戶端設(shè)備110接收請求的路由,識(shí)別與請求的路由相關(guān)聯(lián)的數(shù)據(jù)文檔(例如,使用路由-模塊關(guān)聯(lián)數(shù)據(jù)132),并發(fā)送數(shù)據(jù)文檔至客戶端設(shè)備110。該數(shù)據(jù)文檔包含用于初始化和執(zhí)行在spa114中的模塊并顯示web內(nèi)容的數(shù)據(jù)文檔。該數(shù)據(jù)文檔可包含javascript文檔、css文檔、和/或html文檔。

隨后的路由請求

如前所述,路由處理器116可響應(yīng)于包含未知路由的單一服務(wù)器請求而接收多個(gè)路由。例如,未知路由能夠是路由“/profile/”,并且服務(wù)器130可通過也發(fā)送路由“/profile/edit/”、“/profile/view/”、和“/profile/share/”回復(fù)表明路由“/profile/”的服務(wù)器請求。路由處理器116包含在其路由列表中的附加路由。隨后,合適的模塊被加載在spa114中之后,用戶可啟動(dòng)一個(gè)或多個(gè)附加的路由請求。附加的請求的路由可匹配路由處理器116最近接收的路由之一。繼續(xù)舉例,該下一個(gè)請求的路由能夠是“/profile/edit/”,表明用戶希望編輯他的/她的簡檔。該當(dāng)前加載的模塊能夠構(gòu)成為處理該請求的路由。然而,該當(dāng)前加載的模塊可能需要將與請求的路由相關(guān)聯(lián)的web內(nèi)容的請求(例如,html文檔)發(fā)送至服務(wù)器130。因此,當(dāng)單一模塊的實(shí)例能夠用于處理多個(gè)路由時(shí),多個(gè)路由中的每一個(gè)能夠與不同的組的網(wǎng)頁內(nèi)容,例如html文檔相關(guān)聯(lián)。

刪除模塊

在某些情況下,加載的模塊不構(gòu)成為處理請求的路由。例如,如果簡檔模塊是當(dāng)前加載的,并且用戶請求只能由搜索模塊服務(wù)的路由,則該搜索模塊需要被加載。

在實(shí)施例中,加載的模塊被刪除(或卸載),以響應(yīng)于決定(1)該加載的模塊不能服務(wù)請求的路由和/或(2)該請求的路由還未被加載。例如,響應(yīng)于請求的路由“/profile/”而被加載的模塊不能服務(wù)請求的路由“/mail/”,當(dāng)該路由通過合適的模塊服務(wù)時(shí),允許用戶訪問已尋址并發(fā)送至用戶賬戶的一組電子信息(例如,即時(shí)消息或郵件消息)。該當(dāng)前加載的“profile”模塊可能不構(gòu)成為提供關(guān)于用戶的電子消息的信息。

該第一決定(即加載的模塊不能服務(wù)請求的路由)能夠通過加載的模塊做出,并且該第二決定(即該請求的路由還未被加載)能夠通過路由處理器116做出。

刪除加載的模塊可涉及刪除在運(yùn)行時(shí)間環(huán)境中執(zhí)行的模塊實(shí)例,并且解除分配用于存儲(chǔ)通過模塊生成的實(shí)例、變量和數(shù)據(jù)的內(nèi)存。刪除加載的模塊還可涉及刪除所有用于生成該模塊實(shí)例的數(shù)據(jù)文檔(例如,javascript文檔和css文檔)。

客戶端側(cè)緩存

在將特別模塊的數(shù)據(jù)文檔下載到客戶端設(shè)備110之后,spa114將特別模塊的實(shí)例加載進(jìn)運(yùn)行時(shí)間環(huán)境。如果不再需要該特別模塊的實(shí)例(例如當(dāng)接收的另一請求的路由要求不同的模塊),則spa114可引起該實(shí)例(連同實(shí)例的其他工件(artifacts)例如搜索結(jié)果)從運(yùn)行時(shí)間環(huán)境被刪除。這樣,spa114的內(nèi)存占用保持相對較小。

然而,在實(shí)施例中,即使特別模塊的實(shí)例被刪除了,主機(jī)應(yīng)用112包含緩存功能,利用緩存功能使與該模塊相關(guān)聯(lián)的數(shù)據(jù)文檔緩存在客戶端設(shè)備110上。因此,如果隨后請求與特別模塊相關(guān)聯(lián)的路由,則該特別模塊的數(shù)據(jù)文檔已經(jīng)存儲(chǔ)在客戶端設(shè)備110上。因此,避免與服務(wù)器130往返來檢索合適的數(shù)據(jù)文檔。

預(yù)取

在實(shí)施例中,保留表明先前請求的一個(gè)或多個(gè)路由的請求的路由歷史數(shù)據(jù)(或簡化為“歷史數(shù)據(jù)”)。歷史數(shù)據(jù)能夠存儲(chǔ)于客戶端設(shè)備110或通過服務(wù)器130存儲(chǔ)。

歷史數(shù)據(jù)還能夠表明一個(gè)或多個(gè)路由被請求的次數(shù)和/或時(shí)間。例如,該歷史數(shù)據(jù)可表明路由“/profile/”被選擇了五次,并且最后一次選擇路由“/search/”是一天前。

通過分析歷史數(shù)據(jù),spa114(或服務(wù)器130)可決定一個(gè)或多個(gè)特別路由(和它們關(guān)聯(lián)的依賴項(xiàng)信息)應(yīng)當(dāng)在路由處理器116接收到與一個(gè)或多個(gè)特別路由匹配的請求的路由之前發(fā)送至客戶端設(shè)備110。在從用戶接收請求的路由之前發(fā)送路由數(shù)據(jù)和依賴項(xiàng)數(shù)據(jù)在此被稱為“預(yù)取”。例如,如果用戶幾乎總是在加載spa114之后先選擇路由“/search/”,則spa114(或服務(wù)器130)可在用戶選擇那個(gè)路由之前決定請求(或傳輸)路由“/search/”和其依賴項(xiàng)信息。以這種方式,當(dāng)該用戶最終選擇那個(gè)路由時(shí),創(chuàng)建搜索模塊的實(shí)例所需要的依賴項(xiàng)信息可能已經(jīng)存儲(chǔ)在客戶端設(shè)備110上了。

優(yōu)點(diǎn)

在此的實(shí)施例的一個(gè)優(yōu)點(diǎn)是,spa的模塊(或子應(yīng)用)的開發(fā)者可開發(fā)模塊,而不需要任何spa的其他模塊的知識(shí)。因此,避免了在潛在的許多不同的開發(fā)團(tuán)隊(duì)之間管理單一大型路由。這里的實(shí)施例的另一個(gè)優(yōu)點(diǎn)是,spa有小得多的內(nèi)存占用空間,因?yàn)楫?dāng)spa被下載時(shí)路由和與這些路由相關(guān)聯(lián)的依賴項(xiàng)信息不需要立即下載。相反,在spa中執(zhí)行的模塊的數(shù)據(jù)文檔在需要時(shí)下載。

硬件概述

根據(jù)一個(gè)實(shí)施例,此處描述的技術(shù)由一個(gè)或多個(gè)專用計(jì)算設(shè)備實(shí)現(xiàn)。該專用計(jì)算設(shè)備能夠被硬連線以執(zhí)行技術(shù),或可包含數(shù)字電子設(shè)備例如一個(gè)或多個(gè)專用集成電路(asics:application-specificintegratedcircuits)或持續(xù)編程以執(zhí)行技術(shù)的可編程邏輯門陣列(fpgas:fieldprogrammablegatearrays),或可包含一個(gè)或多個(gè)通用硬件處理器,其被編程以其按照在固件、內(nèi)存、其他存儲(chǔ)器、或組合中的程序指令執(zhí)行技術(shù)。這樣的專用計(jì)算設(shè)備也可將自定義的硬連線邏輯、asics、或fpgas與自定義編程結(jié)合來完成技術(shù)。該專用計(jì)算設(shè)備能夠是臺(tái)式計(jì)算機(jī)系統(tǒng)、便攜式計(jì)算機(jī)系統(tǒng)、手持設(shè)備、網(wǎng)絡(luò)設(shè)備或任何其他包含硬連線和/或程序邏輯來實(shí)現(xiàn)技術(shù)的設(shè)備。

例如,圖3是說明計(jì)算機(jī)系統(tǒng)300的框圖,在該系統(tǒng)上能夠?qū)崿F(xiàn)本發(fā)明的實(shí)施例。計(jì)算機(jī)系統(tǒng)300包含總線302或其他用于通信信息的通信機(jī)構(gòu),和用于處理信息的與總線302耦合的硬件處理器304。硬件處理器304能夠是例如通用微處理器。

計(jì)算機(jī)系統(tǒng)300也包含主存儲(chǔ)器306,例如隨機(jī)存取存儲(chǔ)器(ram:randomaccessmemory)或其他動(dòng)態(tài)存儲(chǔ)設(shè)備,其耦合到總線302用于存儲(chǔ)通過處理器304執(zhí)行的信息和指令。主存儲(chǔ)器306也能夠用于在執(zhí)行通過處理器304執(zhí)行的指令期間存儲(chǔ)臨時(shí)變量或其他中間信息。當(dāng)這樣的指令存儲(chǔ)在處理器304可訪問的非臨時(shí)存儲(chǔ)介質(zhì)中時(shí),使計(jì)算機(jī)系統(tǒng)300成為專用機(jī)器,該機(jī)器被自定義以執(zhí)行指令中規(guī)定的操作。

計(jì)算機(jī)系統(tǒng)300還包含只讀存儲(chǔ)器(rom:readonlymemory)308或其他靜態(tài)存儲(chǔ)設(shè)備,其耦合至總線302,用于存儲(chǔ)用于處理器304的靜態(tài)信息和指令。提供存儲(chǔ)設(shè)備310,例如磁盤或光盤,并耦合至總線302,用于存儲(chǔ)信息和指令。

計(jì)算機(jī)系統(tǒng)300能夠通過總線302耦合至顯示器312,例如陰極射線管(crt:cathoderaytube),用于向計(jì)算機(jī)用戶顯示信息。包含字母數(shù)字和其他按鍵的輸入設(shè)備314耦合到總線302,用于向處理器304發(fā)送通信信息和命令選擇。另一種類型的用戶輸入設(shè)備是光標(biāo)控制器316,例如鼠標(biāo)、軌跡球、或光標(biāo)方向鍵,用于將方向信息和命令選擇傳遞至處理器304并且控制光標(biāo)在顯示器312上移動(dòng)。該輸入設(shè)備典型地在第一軸線(例如x)和第二軸線(例如y)這兩個(gè)軸線上具有兩個(gè)自由度,允許該設(shè)備在平面中指定位置。

計(jì)算機(jī)系統(tǒng)300可使用定制的硬連線邏輯、一個(gè)或多個(gè)asics或fpgas、固件和/或程序邏輯來實(shí)現(xiàn)在此描述的技術(shù),上述技術(shù)與計(jì)算機(jī)系統(tǒng)相結(jié)合引起或編程計(jì)算機(jī)系統(tǒng)300成為專用機(jī)。根據(jù)一個(gè)實(shí)施例,通過計(jì)算機(jī)系統(tǒng)300執(zhí)行在此的技術(shù)以響應(yīng)于處理器304執(zhí)行一個(gè)或多個(gè)包含在主存儲(chǔ)器306中的指令的一個(gè)或多個(gè)序列。這樣的指令能夠從例如存儲(chǔ)設(shè)備310的其他存儲(chǔ)介質(zhì)讀入主存儲(chǔ)器306。包含在主存儲(chǔ)器306中的指令序列的執(zhí)行引起處理器304執(zhí)行在此描述的處理步驟。在另一實(shí)施例中,能夠使用硬連線電路代替軟件指令或與軟件指令相結(jié)合。

該在此使用的術(shù)語“存儲(chǔ)介質(zhì)”指代任何非臨時(shí)介質(zhì),該非臨時(shí)介質(zhì)存儲(chǔ)引起機(jī)器以特別方式運(yùn)行的數(shù)據(jù)和/或指令。這樣的存儲(chǔ)介質(zhì)可包括非易失性介質(zhì)和/或易失性介質(zhì)。非易失性介質(zhì)包含例如光盤或磁盤,例如存儲(chǔ)設(shè)備310。易失性介質(zhì)包含動(dòng)態(tài)存儲(chǔ)器,例如主存儲(chǔ)器306。存儲(chǔ)介質(zhì)常見形式包含例如軟盤、磁盤、硬盤、固態(tài)硬盤、磁帶,或任何其他磁性數(shù)據(jù)存儲(chǔ)介質(zhì),cd-rom、任何其他光學(xué)數(shù)據(jù)存儲(chǔ)介質(zhì)、任何帶有洞的樣式的物理介質(zhì)、ram、prom和eprom、flash-eprom、nvram、任何其他存儲(chǔ)芯片或膠卷(cartridge)。

存儲(chǔ)介質(zhì)不同于傳輸介質(zhì)但是能夠與傳輸介質(zhì)的結(jié)合使用。傳輸介質(zhì)參與在存儲(chǔ)介質(zhì)之間傳輸信息。例如,傳輸介質(zhì)包含同軸電纜、銅線和光纖,包含包括總線302的線纜。傳輸介質(zhì)也可采取聲波或光波形式,例如在無線電波和紅外線數(shù)據(jù)通信中產(chǎn)生的那些聲波或光波。

介質(zhì)的各種形式可能涉及攜帶一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列至處理器304以供執(zhí)行。例如,該指令可最初攜帶至遠(yuǎn)程計(jì)算機(jī)的磁盤或固態(tài)驅(qū)動(dòng)器。該遠(yuǎn)程計(jì)算機(jī)可將指令加載到其動(dòng)態(tài)存儲(chǔ)器中,并使用調(diào)制解調(diào)器將指令通過電話線發(fā)送。至計(jì)算機(jī)系統(tǒng)300的本地調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù)并使用紅外線發(fā)射器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外線檢測器可接收紅外線信號攜帶的數(shù)據(jù),并且合適的電路可將數(shù)據(jù)放置在總線302上。總線302將數(shù)據(jù)攜帶至供處理器304檢索并執(zhí)行指令的主存儲(chǔ)器306。通過主存儲(chǔ)器306接收的指令可選擇地在通過處理器304執(zhí)行之前或之后存儲(chǔ)在存儲(chǔ)設(shè)備310上。

計(jì)算機(jī)系統(tǒng)300也包含與總線302耦合的通信接口318。通信接口318提供雙向數(shù)據(jù)通信,與連接至本地網(wǎng)絡(luò)322的網(wǎng)絡(luò)鏈路320耦合。例如,通信接口318能夠是綜合業(yè)務(wù)數(shù)字網(wǎng)(isdn:integratedservicesdigitalnetwork)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器、或向?qū)?yīng)類型的電話線提供數(shù)據(jù)通信連接的調(diào)制解調(diào)器。作為其他例子,通信接口318能夠是提供數(shù)據(jù)通信連接至兼容的局域網(wǎng)(lan:localareanetwork)的局域網(wǎng)卡。無線鏈路也能夠被執(zhí)行。在任何這樣的執(zhí)行中,通信接口318發(fā)送和接收攜帶代表不同類型信息的數(shù)字?jǐn)?shù)據(jù)流的電氣、電磁或光信號。

網(wǎng)絡(luò)鏈路320典型地通過一個(gè)或多個(gè)網(wǎng)絡(luò)向其他數(shù)據(jù)設(shè)備提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路320可通過本地網(wǎng)絡(luò)322向主機(jī)計(jì)算機(jī)324或向通過英特網(wǎng)服務(wù)提供者(isp:internetserviceprovider)326操作的數(shù)據(jù)裝置提供連接。isp326轉(zhuǎn)而通過現(xiàn)在通常被稱為“英特網(wǎng)”328的全球分組數(shù)據(jù)通信網(wǎng)提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)322和英特網(wǎng)328均使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電氣、電磁或光信號。通過多個(gè)網(wǎng)絡(luò)的信號,在網(wǎng)絡(luò)鏈路320上并通過通信接口318(將數(shù)字?jǐn)?shù)據(jù)攜帶到或出計(jì)算機(jī)系統(tǒng)300)的信號,構(gòu)成傳輸介質(zhì)的例子。

計(jì)算機(jī)系統(tǒng)300可通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路320和通信接口318發(fā)送消息和接收數(shù)據(jù),包含程序代碼。在英特網(wǎng)的例子中,服務(wù)器330可以通過internet328、isp326、本地網(wǎng)絡(luò)322和通信接口318傳輸用于應(yīng)用程序的請求的代碼。

接收到的代碼當(dāng)被接收時(shí)能夠通過處理器304處理,和/或存儲(chǔ)在存儲(chǔ)設(shè)備310中,或其他非易失性存儲(chǔ)器中用于之后執(zhí)行。

在前述說明書中,參照許多具體細(xì)節(jié)描述了本發(fā)明的實(shí)施例,這些細(xì)節(jié)可根據(jù)實(shí)現(xiàn)方式而變化。該說明書和附圖因此被認(rèn)為是具有說明性的而不是限制性的意義。本發(fā)明的范圍和申請人所預(yù)期的本發(fā)明的范圍的唯一和排他性指標(biāo),是本申請發(fā)布的權(quán)利要求的集合的字面上和等價(jià)范圍,本申請中這類權(quán)利要求采用的具體形式發(fā)布,包含任何后續(xù)修正。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
龙里县| 舟山市| 图片| 惠来县| 青田县| 冀州市| 思茅市| 怀柔区| 德保县| 西乌| 日土县| 准格尔旗| 营山县| 樟树市| 偃师市| 砀山县| 乐亭县| 奉新县| 元阳县| 伊川县| 青神县| 安阳市| 云龙县| 新建县| 仙居县| 日照市| 淮阳县| 大连市| 佛坪县| 望奎县| 吉木乃县| 新建县| 喀喇| 孟州市| 武宣县| 绵竹市| 泉州市| 长海县| 太湖县| 屏山县| 林甸县|