資源版本被改變),則ETag值也被改變,并且在緩存驗(yàn)證處理期 間,將從HTTP客戶端接收的ETag值與HTTP服務(wù)器的ETag值進(jìn)行比較,使得確定HTTP客 戶端的本地副本是否是最新版本。
[0098] 如果最新版本資源由HTTP客戶端擁有,則HTTP服務(wù)器不需要重新發(fā)送該資源。圖 1的左表可以概念性地示出使用ETag的網(wǎng)頁(yè)緩存,并且圖1的右表可以概念性地示出使用 Last-Modified的網(wǎng)頁(yè)緩存。
[0099] 在步驟S101-a中,圖1的左表的HTTP客戶端可以通過(guò)特定URI (http://www. server, com/a. jpg)請(qǐng)求圖像文件資源"a. jpg"。在步驟S102_a中,HTTP服務(wù)器可以將 HTTP頭部(諸如,ETag)包括在圖像文件中用作所請(qǐng)求的資源,并且然后發(fā)送所得到的圖像 文件。ETag頭部可以指示分配給當(dāng)前版本的圖像文件資源的ETag值。HTTP客戶端可以接 收響應(yīng)消息,并且可以將圖像文件資源存儲(chǔ)在本地存儲(chǔ)器中(即,可以執(zhí)行本地復(fù)制),并 且同時(shí)還可以存儲(chǔ)ETag值。
[0100] 當(dāng)HTTP客戶端發(fā)送關(guān)于相同URI的請(qǐng)求消息時(shí),在步驟S103-a中,使用HTTP頭部 (即,I f-None-Match)將所存儲(chǔ)的ETag包含在請(qǐng)求消息中。HTTP服務(wù)器接收該請(qǐng)求消息,并 且將所接收的請(qǐng)求消息與關(guān)于由URI指示的資源的當(dāng)前版本的ETag值進(jìn)行比較。如果所接 收的請(qǐng)求消息與ETag值相同,則在步驟S104-a中,使用響應(yīng)代碼"304Not Modified"(304 沒有修改)將資源沒有改變的事實(shí)應(yīng)用至HTTP客戶端。如果HTTP客戶端從HTTP服務(wù)器 接收到響應(yīng)消息,則確定存儲(chǔ)在HTTP客戶端中的資源具有最新版本,使得不能從服務(wù)器再 次接收最新版本資源。
[0101] 不僅ETag而且Last-Modified可以用作主要使用的HTTP緩存驗(yàn)證器(CV)??梢?從圖1的右表看出,Last-Modified的基本操作幾乎類似于ETag的基本操作。與ETag的 基本操作相比,假設(shè)ETag是分配給特定版本的資源的任意ID,Last-Modified可以指示資 源的最后改變時(shí)間。即,當(dāng)HTTP服務(wù)器將資源發(fā)送到HTTP客戶端時(shí),在步驟S102-b中,資 源的最后改變時(shí)間(關(guān)于資源的最后改變時(shí)間的信息)被包含在HTTP的Last-Modified 頭部中,并且然后被發(fā)送到目的地。當(dāng)HTTP客戶端將資源和Last-Modified值存儲(chǔ)在本 地存儲(chǔ)器中,并且將請(qǐng)求發(fā)送到相同URI時(shí),在步驟S103-b中,將所接收的資源的最后改 變時(shí)間包含在If-Modified-Since頭部中,并且然后發(fā)送所得到的If-Modified-Since頭 部。只要資源被改變,HTTP服務(wù)器就可以更新資源改變時(shí)間。假設(shè)對(duì)相同URI的請(qǐng)求包括 If-Modified-Since頭部,將包含在If-Modified-Since頭部中的時(shí)間與最后資源改變時(shí) 間進(jìn)行比較,使得當(dāng)決定資源改變時(shí),重新發(fā)送所請(qǐng)求的資源。如果資源沒有被改變,則在 步驟S104-b中,發(fā)送響應(yīng)代碼"304Not Modified"。
[0102] 基于DM 2. 0的咨源獲取
[0103] DM服務(wù)器可以請(qǐng)求從DM客戶端發(fā)送存儲(chǔ)在UE中的信息。在OMA DM 2.0中,該 信息被配置為DM樹的形式,使得DM樹形狀的信息被存儲(chǔ)在UE中。通常,該DM樹形狀的信 息被稱為管理對(duì)象(MO)數(shù)據(jù)。MO數(shù)據(jù)可以是整個(gè)DM樹信息,或者可以被存儲(chǔ)在單個(gè)節(jié)點(diǎn) 中。圖2示例性地示出在OMA DM 2.0中存儲(chǔ)在UE中的DM樹。在OMA DM 2.0中,包含在 UE中的MO實(shí)例(即,在UE中生成的MO相關(guān)節(jié)點(diǎn)的集合)不僅限于分層樹結(jié)構(gòu),這是因?yàn)?指示DM節(jié)點(diǎn)的節(jié)點(diǎn)的CLientURI基于MO實(shí)例指定節(jié)點(diǎn)地址。
[0104] 在OMA DM 2. 0中,用于允許DM服務(wù)器獲取MO數(shù)據(jù)的請(qǐng)求可以由GET命令實(shí)現(xiàn)。 當(dāng)DM服務(wù)器將GET命令發(fā)送到DM客戶端時(shí),ClientURI還作為GET命令的參數(shù)被發(fā)送。在 此,ClientURI可以是指DM樹的特定節(jié)點(diǎn)。為了使DM服務(wù)器將命令發(fā)送到DM客戶端,可以 使用Package#2,并且Package#2可以包括多個(gè)DM命令。以下表達(dá)示例性地示出包括兩個(gè) GET命令的Package#2。第一 GET命令可以請(qǐng)求存儲(chǔ)在UE中的DevInfoManagement對(duì)象, 并且第二GET命令可以請(qǐng)求安裝在UE中的所有軟件組件的ID。
[0106] 在以上示例中,可以確認(rèn)存在兩個(gè)GET命令,并且ClientURI可以位于GET命 令之后。換句話說(shuō),第一 GET命令是用于請(qǐng)求關(guān)于由"oma:mo:oma-dm-devinfo: L 0//" 表示的整個(gè)DevInfo管理對(duì)象的MO數(shù)據(jù)的命令。第二GET命令可以請(qǐng)求由 "urn:oma:mo:oma-scomo: 1. 0//1]1¥6111:〇^/1)6。1〇5^(1/*/10"指不的所有安裝的軟件組件10 的發(fā)送。當(dāng)接收到該請(qǐng)求時(shí),DM客戶端可以通過(guò)以下響應(yīng)消息,將所請(qǐng)求的MO數(shù)據(jù)發(fā)送到 DM服務(wù)器。對(duì)每個(gè)命令的響應(yīng)代碼的發(fā)送通過(guò)Package#3實(shí)現(xiàn)。DM客戶端可以發(fā)送以下 HTTP消息,作為對(duì)Package#2的響應(yīng)。
[0109] 在以上示例中,DM客戶端的響應(yīng)可以使用HTTP多部分實(shí)現(xiàn)。第一封裝可以包括 Package#3,第二封裝可以是對(duì)第一 GET命令的響應(yīng),并且第三封裝可以是對(duì)第二GET命令 的響應(yīng)。DM服務(wù)器可以向DM客戶端請(qǐng)求MO數(shù)據(jù),并且DM客戶端可以將所請(qǐng)求的MO數(shù)據(jù) 發(fā)送到DM服務(wù)器。
[0110] 如上所述,如果DM客戶端一直使用GET命令發(fā)送由DM服務(wù)器請(qǐng)求的MO數(shù)據(jù),則 可能發(fā)生低效率。即,發(fā)送MO數(shù)據(jù)消耗的時(shí)間被擴(kuò)展,并且響應(yīng)增加,使得由于發(fā)送不必要 數(shù)據(jù)導(dǎo)致可能發(fā)生網(wǎng)絡(luò)資源的不必要消耗。
[0111] HTTP網(wǎng)頁(yè)緩存被應(yīng)用至DM2. 0的示例
[0112] HTTP網(wǎng)頁(yè)緩存還可以在沒有改變的情況下被應(yīng)用至OMA DM2. 0。為此目的,DM客 戶端可以將緩存驗(yàn)證器(CV)分配給DM樹的所有節(jié)點(diǎn),并且可以以與在緩存驗(yàn)證器(CV)被 分配用于HTTP中的每個(gè)資源然后被管理的方案相同的方式管理緩存驗(yàn)證器(CV)。DM服務(wù) 器可以向DM客戶端請(qǐng)求指示由ClientURI表示的資源的DM GET命令。如果存在緩存驗(yàn) 證器(CV),并且如果CV的附加發(fā)送沒有改變請(qǐng)求資源,則接收指示資源沒有改變的狀態(tài)代 碼。不必說(shuō),假設(shè)不存在用于由ClientURI請(qǐng)求的資源的緩存驗(yàn)證器(CV),可以在不使用緩 存驗(yàn)證器(CV)的情況下發(fā)送請(qǐng)求。
[0113] 以下表達(dá)可以指示用于請(qǐng)求DevInfo MO的FwV節(jié)點(diǎn)(被配置成存儲(chǔ)設(shè)備的固件 版本信息)的GET命令。在使用第一 GET命令以請(qǐng)求FwV節(jié)點(diǎn)(資源)的情況下,期望DM 服務(wù)器不包括本地緩存和關(guān)于本地緩存的緩存驗(yàn)證器(CV),使得可以在不使用緩存驗(yàn)證器 (CV)的情況下,如下發(fā)送GET命令。
[0115] 如果DM客戶端接收到GET命令,則不存在緩存驗(yàn)證器(CV),使得由DM服務(wù)器請(qǐng)求 的資源被如下發(fā)送。當(dāng)DM客戶端發(fā)送資源時(shí),關(guān)于資源的緩存驗(yàn)證器(CV)也可以被發(fā)送。 緩存驗(yàn)證器(CV)可以通過(guò)以下CV秘鑰被發(fā)送。在此,假設(shè)ETag被用作緩存驗(yàn)證器(CV)。
[0118] 當(dāng)從DM客戶端接收到上述響應(yīng)時(shí),DM服務(wù)器可以同時(shí)存儲(chǔ)UE固件版本 "android4. 0. 4"和關(guān)于資源的CV "686897696a7c876b7e"。在該情況下,當(dāng)DM服務(wù)器在未 來(lái)請(qǐng)求相同資源時(shí),DM服務(wù)器可以使用GET命令請(qǐng)求資源請(qǐng)求。用作GET命令的第二參數(shù) 的"686897696a7c876b7e"可以被用作緩存驗(yàn)證器(CV)。
[0120] 當(dāng)DM客戶端接收到Package#2時(shí),DM客戶端執(zhí)行緩存驗(yàn)證。如果決定緩存驗(yàn)證, 則指示"Not Modified"的狀態(tài)代碼304可以被發(fā)送到DM服務(wù)器。在該情況下,DM識(shí)別出 本地緩存仍然是有效的,使得DM服務(wù)器可以使用存儲(chǔ)在本地緩存中的"android. 0. 4"。以 下表達(dá)可以指不表不"304Not Modified"的Package#3。
[0122] 如果DM客戶端通過(guò)緩存驗(yàn)證處理識(shí)別出緩存不再有效,則DM客戶端發(fā)送資源, 使得其還可以發(fā)送對(duì)應(yīng)于該資源的緩存驗(yàn)證器(CV)。以下表達(dá)可以指示關(guān)于以上情況的 Package#3〇
[0124] 如果HTTP網(wǎng)頁(yè)緩存被立即應(yīng)用至OM DM 2.0,則DM客戶端必須將緩存驗(yàn)證器 (CV)分配給所有資源,導(dǎo)致在管理多個(gè)緩存驗(yàn)證器(CV)時(shí)發(fā)生意想不到的問題,并且整個(gè) 協(xié)議變得繁重。另外,當(dāng)CV被分配給內(nèi)節(jié)點(diǎn)時(shí),難以定義資源的范圍,其有效性必須通過(guò)相 應(yīng)緩存驗(yàn)證器(CV)驗(yàn)證。即,當(dāng)子節(jié)點(diǎn)或后繼節(jié)點(diǎn)(descendant node)被更新時(shí),分配給 內(nèi)節(jié)點(diǎn)的緩存驗(yàn)證器(CV)在更新緩存驗(yàn)證器(CV)時(shí)可能存在困難。
[0125] 另外,由于緩存驗(yàn)證器(CV)被分配給所有資源,當(dāng)指示多個(gè)節(jié)點(diǎn)的ClientURI ( " urn:oma:mo:oma-scomo: I. 0//Inventory/Deployed/*/ID")在 GET 命令中以與不例"基于 DM 2.0的資源獲取"相同的方式被使用時(shí),可能發(fā)生意想不到的問題。即,由于ClientURI 指示多個(gè)節(jié)點(diǎn),不可能選擇哪個(gè)CV將使用GET命令被發(fā)送。另外,DM服務(wù)器不可能識(shí)別多 少節(jié)點(diǎn)被指定為ClientURI,從而不能使用CV。
[0126] 另外,雖然可以使用在不將CV分配給所有資源的情況下將緩存驗(yàn)證器(CV)選擇 性地分配給一些資源的方法,但是指示哪個(gè)資源將被用于接收CV的信息可能導(dǎo)致意想不 到的問題,或者指示沒有分配CV的資源針對(duì)版本或更新管理使用哪個(gè)方案的信息也可能 導(dǎo)致意想不到的問題。
[0127] 為了解決傳統(tǒng)技術(shù)的上述問題,下文中將詳細(xì)地描述本發(fā)明的一個(gè)實(shí)施方式。
[0128] 圖3示出根據(jù)本發(fā)明的實(shí)施方式的緩存驗(yàn)證器(CV)的分配示例。
[0129] CV是用于提供關(guān)于由服務(wù)器擁有的本地緩存的有效性信息的實(shí)體。換句話 說(shuō),CV可以提供關(guān)于本地緩存的最新信息。作為CV的代表性示例,可以使用時(shí)間信息 (Last-Modified)、ETag等。根據(jù)本發(fā)明的實(shí)施方式,如圖3中所示,CV僅被分配給MO實(shí) 例。然而,CV不總是被分配給包含在DM樹中的所有MO實(shí)例,并且MO實(shí)例被選擇,使得CV 可以僅被分配給必要MO實(shí)例。圖3示例性地示出CV被分配給在UE DM樹中存在的三個(gè)MO 實(shí)例中的兩個(gè)MO實(shí)例(即,F(xiàn)UMO實(shí)例和SCOMO實(shí)例)。
[0130] 分配有CV的MO實(shí)例在下文中將被稱為可緩存MO實(shí)例。為了使用緩存,可緩存MO 實(shí)例必須首先被UE (或DM客戶端)選擇,或者必須首先被DM服務(wù)器選擇,并且CV必須被 分配給所選的MO實(shí)例,使得分配結(jié)果必須被管理。與每個(gè)可緩存MO實(shí)例結(jié)合,DM客戶端 必須一直分配CV,并且只要MO實(shí)例的數(shù)據(jù)改變(即,節(jié)點(diǎn)值被改變、新節(jié)點(diǎn)的添加和刪除、 節(jié)點(diǎn)名稱的改變等),所分配的CV就必須被更新。
[0131] 如果CV僅被分配給MO實(shí)例,則可以有效地執(zhí)行用于使用緩存請(qǐng)求/提供資源的 方法。
[0132] 緩存驗(yàn)證處理可以確定緩存或緩存副本是否是有效的。由于緩存驗(yàn)證器(CV)被 分配給可緩存MO實(shí)例,當(dāng)可緩存MO實(shí)例中的任何數(shù)據(jù)都沒有改變時(shí),緩存驗(yàn)證必須返回 "成功"或"真",并且當(dāng)任何數(shù)據(jù)被改變時(shí),緩存驗(yàn)證必須返回"假"。例如,如果緩存驗(yàn)證器 (CV)是ETag,則將從DM服務(wù)器發(fā)送的ETag值與由UE管理的相應(yīng)MO實(shí)例的ETag值進(jìn)行比 較,使得可以執(zhí)行緩存驗(yàn)證處理。