相關(guān)申請的交叉引用本專利申請要求于2016年4月11日提交的題為“invalidationinacontentdeliverynetwork(cdn)”的美國非臨時申請no.15/095,282的優(yōu)先權(quán),其全部內(nèi)容通過引用并入本文以用于所有目的。版權(quán)聲明本專利文檔包含受版權(quán)保護(hù)的材料。版權(quán)所有者不反對復(fù)制本專利文檔或美國專利商標(biāo)局的檔案中的任何相關(guān)資料,但另保留所有版權(quán)。引用并入以下美國專利通過引用全部并入本文以用于所有目的:12007年10月31日遞交且2011年11月15日發(fā)布的題為“resourceinvalidationinacontentdeliverynetwork”的美國專利no.8,060,613。2.2013年3月15日遞交且2014年9月2日發(fā)布的題為“contentdeliveryframeworkwithdynamicservicenetworktopology”的美國專利no.8,825,830。本發(fā)明涉及內(nèi)容傳送和內(nèi)容傳送網(wǎng)絡(luò)。更具體地,本發(fā)明涉及內(nèi)容傳送網(wǎng)絡(luò)中的無效。附圖說明本發(fā)明的其他目的、特征和特征以及結(jié)構(gòu)的相關(guān)元件的操作方法和功能以及部件和制造經(jīng)濟(jì)的組合將在參考附圖考慮以下描述和附加權(quán)利要求的情況下變得更加明顯,所有附圖構(gòu)成本說明書的一部分。圖1描繪了根據(jù)本發(fā)明的示例性實施例的內(nèi)容傳送網(wǎng)絡(luò)(cdn)的各方面;圖2描繪了根據(jù)本發(fā)明的示例性實施例的傳送服務(wù)的邏輯結(jié)構(gòu);圖3示出了根據(jù)本發(fā)明的示例性實施例的用于存儲無效列表的示例數(shù)據(jù)結(jié)構(gòu);圖4示出了特定內(nèi)容提供商的示例屬性的層次結(jié)構(gòu)或樹結(jié)構(gòu);圖5是本發(fā)明的各方面的操作流程圖;圖6示出了根據(jù)本發(fā)明的示例性實施例的用于存儲共同前綴列表的示例數(shù)據(jù)結(jié)構(gòu);以及圖7描繪了根據(jù)本發(fā)明的示例性實施例的計算的各方面。具體實施方式術(shù)語表如本文所用,除非另有說明,否則以下術(shù)語或縮寫具有以下含義:cdn表示內(nèi)容傳送網(wǎng)絡(luò);http表示超文本傳輸協(xié)議;https表示安全版http;mov表示最小原始版本;rov表示資源原始版本;uri表示統(tǒng)一資源標(biāo)識符;以及url表示統(tǒng)一資源定位符。“機制”是指任何設(shè)備、處理、例程、服務(wù)、模塊或其組合??梢栽谟布?、軟件、固件中,使用專用設(shè)備或其任何組合來實現(xiàn)機制。機制可以集成到單個設(shè)備中,或者可以分布在多個設(shè)備上。機制的各種組件可以在同一位置或分布。機制可以由其他機制形成。通常,如本文所使用的,術(shù)語“機制”因此可以被認(rèn)為是術(shù)語“設(shè)備”和/或“處理”和/或“服務(wù)”的簡寫。背景和概述內(nèi)容傳送網(wǎng)絡(luò)(cdn)代表一個或多個內(nèi)容提供商,優(yōu)選地經(jīng)由公共互聯(lián)網(wǎng)將內(nèi)容(例如,資源)有效地分發(fā)給客戶端。內(nèi)容提供商通過原始源(起源服務(wù)器或起源)提供其內(nèi)容(例如,資源)。cdn還可以提供一種過頂傳輸機制(over-the-toptransportmechanism),用于在反方向上從客戶端到起源服務(wù)器有效地發(fā)送內(nèi)容。終端用戶(客戶端)和內(nèi)容提供商均受益于使用cdn。通過使用cdn,內(nèi)容提供商能夠使其自己的服務(wù)器(例如,起源服務(wù)器)減輕壓力(從而減輕負(fù)載)??蛻舳送ㄟ^能夠以較少的延遲獲得內(nèi)容而受益。圖1示出了示例性cdn100的各方面,其中,一個或多個內(nèi)容提供商102通過一個或多個原始源104和傳送服務(wù)(服務(wù)器)106,經(jīng)由一個或多個網(wǎng)絡(luò)110向客戶端108提供內(nèi)容。傳送服務(wù)(服務(wù)器)106可以形成傳送網(wǎng)絡(luò),客戶端可從該傳送網(wǎng)絡(luò)獲得內(nèi)容。傳送服務(wù)106可以在邏輯上和/或物理上分層次地組織并且可以包括邊緣高速緩存。在美國專利no.8,060,613和8,825,830中描述了示例性cdn,這二者的全部內(nèi)容已經(jīng)通過引用完整并入本文以用于所有目的。與特定內(nèi)容提供商相關(guān)聯(lián)或由其提供的內(nèi)容可以被稱為資產(chǎn)(property)。資產(chǎn)可以是例如網(wǎng)站和相關(guān)內(nèi)容,并且通常包括多個資源。cdn可以提供與一個或多個內(nèi)容提供商相關(guān)聯(lián)和/或代表一個或多個內(nèi)容提供商的一個或多個資產(chǎn)。內(nèi)容提供商可以具有多于一個的資產(chǎn),并且因此cdn可以服務(wù)/提供與特定內(nèi)容提供商相關(guān)聯(lián)和/或代表特定內(nèi)容提供商的一個或多個資產(chǎn)。應(yīng)當(dāng)理解,cdn的組件(例如,傳送服務(wù)器等)可以使用cdn將內(nèi)容傳送到其他cdn組件。因此,cdn組件本身可以是cdn的客戶端。例如,cdn可以使用其自己的基礎(chǔ)設(shè)施將cdn內(nèi)容(例如,cdn控制和配置信息)傳送到cdn組件。內(nèi)容(例如,與內(nèi)容提供商的屬性相關(guān)聯(lián)的資源)可以被緩存在cdn內(nèi)的各種位置處,例如,在由cdn的各種傳送服務(wù)形成的傳送網(wǎng)絡(luò)中的節(jié)點處。內(nèi)容可以被緩存,例如當(dāng)其被cdn提供時。cdn不應(yīng)提供陳舊的或過期的或作廢的(無效的)內(nèi)容,而應(yīng)在提供服務(wù)之前(如果存在內(nèi)容的有效版本)刷新無效的或過期的或陳舊的內(nèi)容。內(nèi)容可以被異步刷新。無效是一種機制,通過該機制,存儲在服務(wù)中的信息(例如,可用于導(dǎo)出對未來請求的響應(yīng)的信息)被標(biāo)記或指定為不再可直接用于響應(yīng)導(dǎo)出,從而指示必須使用某種形式的狀態(tài)更新或替代導(dǎo)出路徑來導(dǎo)出對未來請求的響應(yīng)。使用無效的服務(wù)消費無效清單,并在本地處理這些清單中包含的命令。緩存或傳送服務(wù)是使用無效的服務(wù)的典型示例。高速緩存存儲資源的文字副本,并使用所存儲的文字副本對資源(或基于資源的信息)的未來請求進(jìn)行響應(yīng),只要副本不陳舊。應(yīng)當(dāng)理解,請求可以針對特定資源本身或針對基于特定資源確定或?qū)С龅男畔?例如,另一資源)。在這種情況下,過時可能基于例如所存儲的原始副本基于年齡的過期,或者基于從該副本被存儲以來該副本是否已被明確地?zé)o效。當(dāng)接收到無效命令時,該無效命令具有已在高速緩存中的命令目標(biāo),只需標(biāo)記該緩存副本即可實現(xiàn)該命令。當(dāng)資源不在高速緩存中,或者當(dāng)命令涉及一組潛在的許多資源時,必須采取附加步驟,以確保(例如,從某些其他高速緩存器)稍后找回的副本滿足最后一個可適用無效命令的約束。在本文中術(shù)語“無效”有時被用來指代無效命令。緩存內(nèi)容可與生存時間(ttl)值相關(guān)聯(lián),在這種情況下,內(nèi)容不應(yīng)在其ttl過期后被提供(即,不應(yīng)被視為有效)。通過用信號向傳送服務(wù)(或傳送服務(wù)網(wǎng)絡(luò))發(fā)送內(nèi)容的無效,也可以使該內(nèi)容無效。例如,可以通過提供指定一個或多個資源的無效指令來用信號發(fā)送無效。用于本說明書的目的,資源是或?qū)?yīng)于可尋址的內(nèi)容項。由cdn提供(例如,供應(yīng))的每個資源(包括內(nèi)部cdn資源)可以用統(tǒng)一資源標(biāo)識符(uri)來標(biāo)識或?qū)ぶ?,uri可以是統(tǒng)一資源定位符(url)。例如在networkworkinggroup,requestforcomments(rfc)3986,berners-lee,2005年1月,“統(tǒng)一資源標(biāo)識符(uri):通用語法”中描述了uri。并且例如在networkworkinggroup,berners-lee,requestforcomments1738,1994年12月,“統(tǒng)一資源定位符(url)”中描述了url,這二者的全部內(nèi)容通過引用完整并入本文以用于所有目的。在優(yōu)選實施例中,每個資源可由url尋址,并且無效指令可以指定單個資源或一組(零個或更多個)資源。指定單個資源的無效指令可以指定該資源的url(或uri)??梢岳缤ㄟ^一組對可能資源集合的約束來指定資源組。因此,通常,組無效通過定義組成員的一個或多個約束來指定組。組無效指令可以例如指定特定子目錄中的所有內(nèi)容或具有共同擴展名的所有資源不再有效。指定資源組的無效指令可以例如使用在這些資源的規(guī)范中的一個或多個通配符。在一些實現(xiàn)中,組無效被稱為通配符無效。例如,特定內(nèi)容提供商(cp)可以具有由根“/cp”指定的屬性,并且可以包括子目錄“/cp/圖像”下的圖像。特定圖像(例如,“/cp/images/imagel.jpg”)可以被無效,一組圖像(例如,“/cp/images/image_september*2014.jpg”)同樣可以被無效,其中星號是對應(yīng)于零個或更多個字符的元字符(或通配符)。應(yīng)當(dāng)理解,組無效可以指定零個或更多個資源。例如,可能不存在滿足約束“/cp/images/image_september*2014.jpg”的任何資源。如這里所使用的,“資源”表示(潛在的)對特定請求的的緩存響應(yīng),因此理論上可以考慮請求或響應(yīng)的任何屬性來定義組?;谫Y源組的無效系統(tǒng)的實際實現(xiàn)可能針對如何有效定義組來施加附加約束,但是這種約束不需要在架構(gòu)級施加。在本發(fā)明的一些優(yōu)選實現(xiàn)中,可以通過諸如所謂的“glob”模式語言之類的模式語言來指定組。如本文所使用的,glob模式語言是任意模式語言,其中,“*”元字符用于匹配任何字符序列,但是也可以存在其他元字符。glob是以glob模式語言編寫的模式。*-glob(星號glob)模式語言是只有“*”元字符和文字字符的glob模式語言。*-glob(星號-glob)(或*-glob模式)是以*-glob模式語言編寫的模式。應(yīng)當(dāng)理解,該系統(tǒng)不以任何方式受限于本文所使用或描述的模式匹配算法或語言。該系統(tǒng)也不以任何方式受限于用于實現(xiàn)本文所描述的模式或模式匹配(或相關(guān)操作)的特定語言或程序。特別地,應(yīng)當(dāng)理解,在url上定義的正則表達(dá)式或glob模式只是定義組的許多可能方式中的一些方式。本領(lǐng)域技術(shù)人員將通過閱讀本說明書來認(rèn)識和理解可以在本文中使用和考慮描述組的不同和/或其他方式。最小原始版本(mov)無效無效清單實現(xiàn)基于原始版本的無效方法。當(dāng)通過無效命令來無效內(nèi)容時,該被無效內(nèi)容的最小原始版本(mov)遞增。最小原始版本無效假定每個起源是單個資源命名空間,并且所有無效命令與單個原始位置處的某些原始閾值事件相關(guān)。這種方法允許將無效定義為最小原始版本的設(shè)置,其中系統(tǒng)中的每個高速緩存在內(nèi)容從起源進(jìn)入時估計最小原始版本。mov無效通常要求當(dāng)在多個位置發(fā)布內(nèi)容時起源服務(wù)器是一致的,使得給定的url將接收一致的資源,而不管接觸哪個起源。高速緩存中的每個資源具有與之相關(guān)聯(lián)的資源原始版本(rov)。當(dāng)高速緩存從起源服務(wù)器或從另一高速緩存直接獲得內(nèi)容時,獲得/設(shè)置資源的rov。無論在哪里,rov仍然是資源副本的實際原始版本,直到它被重新驗證或刷新。如果高速緩存向另一高速緩存請求內(nèi)容,則客戶端高速緩存使用服務(wù)器所提供的任何rov作為其存儲在高速緩存中的rov。每個無效命令(ic)都具有相關(guān)聯(lián)的mov值。如果高速緩存中的資源的rov值至少與mov值一樣大,則該資源被認(rèn)為是有效的并且可以被提供。另一方面,如果緩存資源的rov值小于mov值,則在被提供之前必須獲得資源的新版本。例如,如果涉及特定資源r的無效命令具有mov=100,并且資源r的緩存版本具有rov=99,則資源r被認(rèn)為是陳舊的且不能被提供。另一方面,如果資源r的緩存版本具有rov=100或更高,則資源r的緩存版本沒有過時,并且可以被使用(例如,被提供)。在于2013年3月15日遞交且于2014年9月2日發(fā)布的題為“contentdeliveryframeworkwithdynamicservicenetworktopology”的美國專利no.8,825,830中描述了mov無效,其全部內(nèi)容通過引用全部并入本文,以用于所有目的,包括具體用于描述無效和mov無效。圖2描繪了根據(jù)本發(fā)明的示例性實施例的傳送服務(wù)106的邏輯結(jié)構(gòu)。如圖2所示,傳送服務(wù)106包括與規(guī)則引擎204交互以處理和提供對傳入請求的響應(yīng)的請求/響應(yīng)處理機制202。所請求的資源可能已被緩存在與傳送服務(wù)106相關(guān)聯(lián)的本地高速緩存206中,盡管如所解釋的,但在提供之前必須確定任何緩存資源的有效性。在這方面,規(guī)則引擎204可以通過無效機制210訪問在傳送服務(wù)106處保持的一個或多個無效列表208。用于本說明書的目的,無效機制210的作用是在傳送服務(wù)106上保持無效信息(例如,無效列表208),如下面更詳細(xì)描述的。優(yōu)選地,每個傳送服務(wù)106負(fù)責(zé)提供特定屬性或?qū)傩约?,并且?yōu)選地,存在針對傳送服務(wù)106所負(fù)責(zé)的每個屬性的無效列表。圖3示出了用于存儲n個無效列表的示例數(shù)據(jù)結(jié)構(gòu),其中,針對傳送服務(wù)106可以提供的每個屬性p1、p2…pn有一個列表(在這種情況下,假設(shè)傳送服務(wù)負(fù)責(zé)提供n個屬性中的每一個)。針對特定屬性的示例性無效列表可以包括針對該屬性的多個無效命令(或約束)。例如,如圖3所示,針對屬性pn的無效列表可以包括針對該屬性的至多m個無效命令(ic1、ic2、ic3…icm)。應(yīng)當(dāng)理解,該方法的一方面是可能需要保持在高速緩存器處接收的并且沒有命中該高速緩存中的資源的無效命令(或者針對可以從該高速緩存提供的屬性),以確保以一致的方式完成匹配資源的任何后續(xù)填充。無效命令(icj)指定mov和某個資源描述符或指定符,該資源描述符或指定符標(biāo)識當(dāng)前可能在或可能不在高速緩存中的單個資源或資源組。恰好指定一個資源(例如,通過名稱)的ic還可以被稱為基礎(chǔ)資源指定符(groundresourcespecifier)。基礎(chǔ)ic可以在接收時被處理,從而當(dāng)接收到ic時將指定的資源標(biāo)記為無效。當(dāng)接收到請求時,對組無效(指定組的無效命令)進(jìn)行評估。因此,無效命令i可以是:(i)形式為i(mov,r)的基礎(chǔ)命令,其中r恰好指定一個資源,mov是該資源的mov值;或(ii)形式為i(mov,g)的組命令,其中mov是mov值,g指定約束集。雖然基礎(chǔ)資源指定符指定一個資源,但在某些情況下,基礎(chǔ)無效命令可能會影響多個資源,所有這些資源都可能被單個url訪問(例如,具有多個可用內(nèi)容編碼的資源或多個變型)。圖4示出了特定內(nèi)容提供商的示例屬性的層次結(jié)構(gòu)或樹結(jié)構(gòu)。為了該示例,屬性以斜杠“/”字符開始,并且具有兩個主要的資源子樹(“/xyz”和“/abc”)。由“/xyz”指定的資源子樹包括資源子樹“/xyz/pqr”,其包括四個資源子樹(“/xyz/pqr/fa/”,“/xyz/pqr/fan”,“/xyz/pqr/fun/”和“/xyz/pqr/fx”)。該屬性可以包括其他子樹(未示出)。以下是被配置為具有最多十個無效命令(ic)的屬性的示例無效列表,其中存儲了七個命令,并且還有用于三個無效命令的空間。注意,該列表是進(jìn)行mov排序的,其基于利用無效命令或清單提供的mov值,或基于皺縮(crumpling)期間確定的mov值(如下所述)。在該示例列表中,無效命令/約束以glob-*模式的形式來指定。因此,例如,第一模式將匹配以字符串“/xyz/pqr/f”開始的任何資源,而第二模式將匹配以字符串“/xyz/pqr/fu”開始的任何資源。因此,參照圖4所示的屬性層級,第一模式/約束(“/xyz/pqr/f*”)匹配四個資源子樹“/xyz/pqr/fa/”、“/xyz/pqr/fan”、“/xyz/pqr/fun/”和“/xyz/pqr/fx”,而第二約束(“/xyz/pqr/fu*”)只匹配子樹“/xyz/pqr/fun”。無效命令/約束可能涉及有效資源。例如,在圖4所示的示例中,假設(shè)子樹“/xyz/pqr/fun”中的某些資源無效,但其他子樹(“/xyz/pqr/fa/”、“/xyz/pqr/fan”和“/xyz/pqr/fx”)中的所有資源仍然有效。無效命令#1(“/xyz/pqr/f*”)將涉及子樹(“/xyz/pqr/fa/”、“/xyz/pqr/fan”和“/xyz/pqr/fx”)中的所有資源,即使它們有效。另一方面,無效命令#2將不涉及這些有效資源。無效約束通常優(yōu)選盡可能少地涉及(并因此無效)有效資源(如果有的話)。換句話說,無效約束通常優(yōu)選對有效資源的影響最小,同時仍然使所有無效資源無效。無效機制210包括用于將無效命令添加到適當(dāng)?shù)臒o效列表208的添加無效機制212。當(dāng)傳送服務(wù)106接收到新的無效命令214(例如,以無效清單的形式)時,添加無效機制212嘗試將這些命令中的至少一些添加到適當(dāng)?shù)臒o效列表208,如下所述。如所述,每個屬性的無效列表具有最大大小(max)(即,它可以存儲的最大約束數(shù))。該最大值優(yōu)選地由管理員設(shè)置,并且優(yōu)選地不可由用戶(即,由cdn的訂戶)設(shè)置。每個無效列表還可以具有與之相關(guān)聯(lián)的閾值(t)(其中t≤max)。在當(dāng)前優(yōu)選實現(xiàn)中,每個屬性的用于存儲和搜索的模式的最大全局默認(rèn)數(shù)量是100。對于該初始默認(rèn)的動機是限制每個請求的glob搜索數(shù)(在請求/響應(yīng)處理期間)。應(yīng)當(dāng)理解,不同的訂戶可以具有不同的最大列表大小。參考圖5中的流程圖,當(dāng)傳送服務(wù)106接收到新的無效命令214時,針對重復(fù),添加無效機制212對適當(dāng)?shù)臒o效列表208檢查新命令214。刪除現(xiàn)有模式的精確重復(fù),并使用新的(最新)mov值以及強制mov值進(jìn)行更新(如果無效是強制類型,則mov被跟蹤,如下面討論的)。在操作中,無效資源通常保留在高速緩存中,直到針對該資源的請求觸發(fā)使資源重新有效(例如,經(jīng)由起源服務(wù)器或?qū)Φ润w)。重新有效采用條件get的形式,條件get只有在被修改的情況下才獲得資源。所謂的“強制”無效執(zhí)行來自起源服務(wù)器(或適當(dāng)?shù)奈恢?的資源的無條件“get”。在插入時,如果模式數(shù)量超過所允許的數(shù)量(或針對該屬性的閾值),則發(fā)起皺縮(crumpling),直到模式的數(shù)量下降到最大允許數(shù)量(或閾值)以下。皺縮對于基于模式的(非顯式)無效方法,無效無法安全到期。為了嘗試減輕這種方法的潛在性能影響,對皺縮進(jìn)行優(yōu)化。目標(biāo)是對兩個條目進(jìn)行皺縮,使得皺縮的結(jié)果產(chǎn)生最小的影響。在無效列表的上下文中,通過皺縮機制216來執(zhí)行皺縮。皺縮是合并或以某種方式組合兩個或更多個無效模式或約束的效果??梢愿鶕?jù)皺縮函數(shù)crumple來定義皺縮,該皺縮函數(shù)crumple采用兩個或更多個無效命令(包括其相關(guān)聯(lián)的mov值)作為輸入,并返回至少與輸入無效命令一樣嚴(yán)格的無效命令(合并的命令)。換句話說,合并的命令至少應(yīng)使輸入命令將無效的每個資源無效。組合/合并的約束被插入到無效列表中,并替換所有被組合/合并的約束,并且所生成的無效約束至少應(yīng)與所有組合的約束一樣嚴(yán)格。注意,皺縮函數(shù)的輸入可以僅來自當(dāng)前無效列表,或者其可以包括新接收的無效命令中的一個或多個。為了使皺縮具有最小有效影響,存在兩個基本假設(shè):1.與在目錄內(nèi)進(jìn)行皺縮相比,對目錄進(jìn)行皺縮,特別是“/”,影響更多的資源。2.與對較少數(shù)量的字符進(jìn)行皺縮相比,對目錄中的較多數(shù)量的字符進(jìn)行皺縮影響更多的資源。在優(yōu)選實現(xiàn)中,高速緩存中沒有資源的索引或列表,并且通常也沒有辦法知道子目錄中有多少實際資源。本領(lǐng)域普通技術(shù)人員將在閱讀本說明書后認(rèn)識到并理解,由于無法知道任何子目錄中有多少實際資源,所以這些假設(shè)可能并不總是給出最佳結(jié)果。皺縮機制216保持針對服務(wù)106所負(fù)責(zé)的每個屬性的前綴列表(或共同前綴數(shù)組)218。也就是說,皺縮機制216針對具有無效列表208的每個屬性保持每個屬性的共同前綴數(shù)組(圖2和圖6)。當(dāng)接收到新的無效模式時,針對現(xiàn)有的模式列表檢查新的模式。如果找到共同前綴,那么將該共同前綴添加到前綴數(shù)組(如果還沒有的話)。從“最小影響”到“最大影響”對前綴數(shù)組進(jìn)行排序(基于上面給出的兩個假設(shè))。前綴數(shù)組可以不大于允許模式的最大數(shù)量。前綴數(shù)組中也可能出現(xiàn)皺縮,但是應(yīng)該不經(jīng)常出現(xiàn),如果這樣,則將按照從最大影響到最小影響的順序刪除元素。然后,皺縮涉及采用最小影響前綴數(shù)組元素,匹配并組合針對該共同前綴的無效模式。以下是被配置為具有最多十個無效命令的屬性的示例性mov排序的無效列表,其中存儲了十個命令,并且沒有用于更多無效命令(ic)的空間。在這些示例中示出了示例性mov值。無效模式/約束mov值1/xyz/pqr/f*1002/xyz/pqr/fu*1103/abc/def/2*1124/elect/2015*1205/diet/atk*1306/abc/def/4*1407/elect/2012*1508/xyz/pqr/ab*2009/diet/nocrb*22010/st/patrick/*230該屬性的相應(yīng)前綴列表為:共同前綴列表1/diet/2/abc/def/3/xyz/pqr/4/elect/2015/xyz/pqr/f678910在該示例中,當(dāng)接收到新的無效命令(例如,“/st/peter/*”)時,應(yīng)在確定對什么進(jìn)行皺縮前將條目(“/st/p”)添加到(它與無效列表中已有的任何條目之間的最長共同前綴的)前綴列表。由于對目錄中的6個字符進(jìn)行皺縮,所以應(yīng)將其緊靠在“/elect/201”之前插入,如下所示:共同前綴列表1/diet/2/abc/def/3/xyz/pqr/4/st/p5/elect/2016/xyz/pqr/f78910還必需在無效清單上留出空間。存在多個可能的合并候選,例如:(i)“/xyz/pqr/f*”和“/xyz/pqr/fu*”可以合并為“/xyz/pqr/f*”;或者(ii)“/diet/atk*”和“/diet/nocrb*”可以合并為“/diet/*”;或者(iii)“/xyz/pqr/f*”和“/xyz/pqr/fu*”和“/xyz/pqr/ab*”可以合并為“/xyz/pqr/*”;或者(iv)“/abc/def/2*”和“/abc/def/4*”可以合并為“/abc/def/*”;或者(v)“/xyz/pqr/f*”和“/xyz/pqr/fu*”和“/xyz/pqr/ab*”和“/diet/atk*”和“/diet/nocrb*”可以全部合并為“/di*”;或者(vi)“/elect/2015*”和“/elect/2012*”可以合并為“/elect/201*”;或者(vii)“/st/peter/*”和“/st/patrick/*”可以合并為“/st/p*”;或者(vii)所有模式/約束可以合并為“/*”。顯然,最后一個,(vii)將涉及最多的資源,因為它有效地強制無效針對屬性的每個資源。然而,基于前綴數(shù)組,將ic合并為前綴“/xyz/pqr/f*”應(yīng)(對有效資源)具有最小影響。因此,將“/xyz/pqr/f*”和“/xyz/pqr/fu*”兩個模式合并為“/xyz/pqr/f*”,并將新模式插入到列表中。皺縮的結(jié)果如下所示:如所述,無效列表是mov排序的。mov值在皺縮期間被更新。特別地,合并后模式的mov值是被合并的模式的最高mov值。因此,例如,當(dāng)組合“/xyz/pqr/f*”和“/xyz/pqr/fu*”時,所得到的條目將具有所組合的無效命令的最高mov;在這種情況下,mov來自“/xyz/pqr/fu*”命令?!?xyz/pqr/f*”的mov值為100,“/xyz/pqr/fu*”的mov值為110,因此合并模式的mov值為110=max(100,110)。通常,如果將k個無效模式(p1…pk)合并(或皺縮)為模式pc,則pc的mov是max(movi,i=1…k)。注意,被合并的特定模式可能已經(jīng)是先前合并的結(jié)果,因此該合并期間可能已經(jīng)設(shè)置了該特定模式的mov。還要注意,模式pc可以是被合并的已經(jīng)存在的模式(pi)之一,然而其mov值可改變。例如,在給定示例中,在皺縮之前和之后,模式“/xyz/pqr/f*”在列表中,但其mov值已更改(從100到110)。在上面的示例中,“/abc/def/2*”的值和在其以上的值與它們在初始表中一樣。本領(lǐng)域的普通技術(shù)人員將在閱讀本說明書后認(rèn)識到并且理解,更新合并后資源的mov值可導(dǎo)致更多的假陽性無效。在這里給出的示例中,依照原始無效約束列表,請求路徑為/xyz/porfabc且存儲有100或更大rov的資源將被認(rèn)為是新的。然而,在皺縮后,只是rov為110或更大的資源才會被認(rèn)為是有效的?;诤喜⒑筒迦?,共同前綴列表更新如下:從該示例顯而易見的是,皺縮的無效命令不必包括新的命令,并且已經(jīng)在列表中的命令可以是被合并的命令。將哪些無效命令皺縮或合并的決定可以基于組合命令的mov值。在一些情況下,可以基于哪些無效命令具有組合命令中mov值的最小變化來合并無效命令。在一些情況下,可以基于哪些無效命令具有組合命令中的最小實際mov值來合并無效命令。mov值可以用作例如合并/皺縮候選的決勝者(tiebreaker)。例如,考慮四個無效命令:ic1:constraint1,mov1ic2:constraint2,mov2ic3:constraint3,mov3ic4:constraint4,mov4假設(shè)合并選擇是:ic5=ic1&ic2:mov5=max(mov1,mov2)ic6=ic3&ic4:mov6=max(mov3,mov4)在一些情況下,可以選擇具有mov5和mov6中較低者的合并。在一些情況下,可以選擇使(i)mov5和min(mov1,mov2)之間的差以及(ii)mov6和min(mov3,mov4)之間的差最小化的合并。因此,例如,如果mov1=100并且mov2=101,則mov5=101,并且min(mov1,mov2)之間的差為1。如果mov3=90并且mov4=120,則mov6=120,并且mov6和min(mov3,mov4)之間的差為30。將選擇使該差最小化的合并(即,ic5)。請求-響應(yīng)處理在優(yōu)選實現(xiàn)中,實際資源的無效發(fā)生在請求該資源的時間。由于多個原因,這樣是有利的,包括:如果資源從不被請求,則基本上沒有什么要做(除了存儲無效信息)。當(dāng)服務(wù)獲得對資源的請求(例如,http請求)時,它針對無效資源的適當(dāng)列表(即,針對該屬性的無效資源的列表)檢查所請求的資源。如果該資源對應(yīng)于列表上的約束,并且資源的rov值小于約束的mov值,則必須在資源可以被提供之前獲得資源的有效/新版本。因此,如果列表上的約束指示所請求的資源是無效的,則服務(wù)復(fù)制資源(例如,從諸如起源服務(wù)器的內(nèi)容提供商的內(nèi)容源,或從cdn中的另一位置(例如,對等體))。當(dāng)獲得資源的新版本時,更新資源的rov值。例如,假設(shè)用戶在上述皺縮之前請求資源“/xyz/pqr/fa.gif”。在該示例中,假設(shè)高速緩存具有rov=101的版本“/xyz/pqr/fa.gif”。所請求的資源與無效約束“/xyz/pqr/f*”匹配,但緩存資源的rov(rov=101)大于與該約束相關(guān)聯(lián)的mov值(mov=100)??梢蕴峁┚彺姘姹尽T谏鲜霭櫩s之后,約束“/xyz/pqr/f*”的mov值為110,因此rov=101的緩存資源“/xyz/pqr/fa.gif”被認(rèn)為無效。服務(wù)器刷新例如來自起源服務(wù)器或cdn中的另一位置的資源“/xyz/pqr/fa.gif”。刷新后版本的rov必須至少為110,以被認(rèn)為是有效的。如上所述,版本可能已經(jīng)有效,并且因為皺縮可能被當(dāng)作是無效的(作為假陽性)。在美國專利no.8,060,613中描述了cdn中無效的示例性操作,其全部內(nèi)容通過引用完整并入本文以用于所有目的。應(yīng)當(dāng)理解,皺縮不必發(fā)生在提供內(nèi)容的同一設(shè)備上。例如,皺縮可以在邊緣設(shè)備處進(jìn)行,或者可以在中央進(jìn)行。計算至少部分地通過在cdn100的一個或多個計算機上運行的軟件來實現(xiàn)以上示出和描述的服務(wù)、機制、操作和動作。可以以多種方式使用各種媒體(例如,計算機可讀介質(zhì))來存儲和傳輸實現(xiàn)這些方法的程序(以及其他類型的數(shù)據(jù))。可以使用硬連接電路或定制硬件來代替或結(jié)合可實現(xiàn)各種實施例的處理的一些或全部軟件指令。因此,可以使用硬件和軟件的各種組合而不只是軟件。本領(lǐng)域的普通技術(shù)人員將在閱讀本說明書之后容易認(rèn)識和理解,本文描述的各種處理可以由例如適當(dāng)編程的通用計算機、專用計算機和計算設(shè)備來實現(xiàn)。一個或多個這樣的計算機或計算設(shè)備可以被稱為計算機系統(tǒng)。圖7是可以在其上實現(xiàn)和實施本公開的實施例的計算機系統(tǒng)700的示意圖。根據(jù)本示例,計算機系統(tǒng)700包括總線702(即互連)、一個或多個處理器704、主存儲器706、可移除存儲介質(zhì)710、只讀存儲器708、大容量存儲設(shè)備712以及一個或多個通信端口714。通信端口714可以連接到一個或多個網(wǎng)絡(luò),計算機系統(tǒng)700可以通過該網(wǎng)絡(luò)接收和/或發(fā)送數(shù)據(jù)。如本文所使用的,“處理器”表示一個或多個微處理器、中央處理單元(cpu)、計算設(shè)備、微控制器、數(shù)字信號處理器或類似設(shè)備或其任何組合,而不管其架構(gòu)如何。執(zhí)行處理的裝置可以包括例如處理器和適合于執(zhí)行該處理的諸如輸入設(shè)備和輸出設(shè)備的那些設(shè)備。處理器704可以是任何已知的處理器,例如但不限于或處理器、或處理器或線的處理器等。通信端口714可以是用于基于調(diào)制解調(diào)器的撥號連接的rs-232端口、10/100以太網(wǎng)端口、使用銅纜或光纖的千兆端口或usb端口等中的任何一個??梢愿鶕?jù)計算機系統(tǒng)700所連接到的諸如局域網(wǎng)(lan)、廣域網(wǎng)(wan)、cdn或任何網(wǎng)絡(luò)之類的網(wǎng)絡(luò)來選擇通信端口714。計算機系統(tǒng)700可以經(jīng)由輸入/輸出(i/o)端口720與外圍設(shè)備(例如,顯示屏幕716、輸入設(shè)備718)通信。主存儲器706可以是隨機存取存儲器(ram)或本領(lǐng)域公知的任何其他動態(tài)存儲設(shè)備。只讀存儲器708可以是任何靜態(tài)存儲設(shè)備,例如用于存儲靜態(tài)信息(諸如處理器704的指令)的可編程只讀存儲器(prom)芯片。大容量存儲設(shè)備712可以用于存儲信息和指令。例如,可以使用諸如系列的小型計算機串行接口(scsi)驅(qū)動器之類的硬盤、光盤、諸如獨立磁盤的冗余陣列(raid)、諸如系列的raid驅(qū)動器之類的磁盤陣列或者任何其他大容量存儲設(shè)備??偩€702將處理器704與其他存儲器、存儲設(shè)備和通信模塊通信地耦接。根據(jù)所使用的存儲設(shè)備等,總線702可以是pci/pci-x、scsi、基于通用串行總線(usb)的系統(tǒng)總線(或其他總線)??梢瞥鎯橘|(zhì)710可以是任何種類的外部硬盤驅(qū)動器、軟盤驅(qū)動器、驅(qū)動器、致密盤-只讀存儲器(cd-rom)、致密盤可重寫(cd-rw)、數(shù)字通用盤-只讀存儲器(dvd-rom)等。本文中的實施例可以被提供為一個或多個計算機程序產(chǎn)品,其可以包括其上存儲有指令的機器可讀介質(zhì),所述指令可以用于對計算機(或其他電子設(shè)備)進(jìn)行編程以執(zhí)行處理。如本文所使用的,術(shù)語“機器可讀介質(zhì)”是指參與提供數(shù)據(jù)(例如,指令、數(shù)據(jù)結(jié)構(gòu))的任何介質(zhì)、多個相同或不同介質(zhì)的組合,所述數(shù)據(jù)可以由計算機、處理器或類似設(shè)備讀取。這樣的介質(zhì)可以采取許多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)包括例如光盤或磁盤以及其他持久型存儲器。易失性介質(zhì)包括通常構(gòu)成計算機的主存儲器的動態(tài)隨機存取存儲器。傳輸介質(zhì)包括同軸電纜、銅線和光纖,其包括包含耦接到處理器的系統(tǒng)總線在內(nèi)的導(dǎo)線。傳輸介質(zhì)可以包括或傳送諸如在射頻(rf)和紅外(ir)數(shù)據(jù)通信期間產(chǎn)生的那些聲波、光波和電磁發(fā)射。機器可讀介質(zhì)可以包括但不限于軟盤、光盤、cd-rom、磁光盤、rom、ram、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡、閃存或適用于存儲電子指令的其他類型的介質(zhì)/機器可讀介質(zhì)。此外,本文中的實施例還可以作為計算機程序產(chǎn)品下載,其中,可以通過經(jīng)由通信鏈路(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接),通過在載波或其他傳播介質(zhì)中體現(xiàn)的數(shù)據(jù)信號將程序從遠(yuǎn)程計算機傳送到請求計算機。在將數(shù)據(jù)(例如,指令序列)傳送到處理器時可能涉及到以下各種形式的計算機可讀介質(zhì)。例如,數(shù)據(jù)可以(i)從ram傳送到處理器;(ii)通過無線傳輸介質(zhì)運送;(iii)根據(jù)多種格式、標(biāo)準(zhǔn)或協(xié)議進(jìn)行格式化和/或傳輸;和/或(iv)以本領(lǐng)域眾所周知的各種方式中的任何一種進(jìn)行加密。計算機可讀介質(zhì)可以(以任何適當(dāng)?shù)母袷?存儲適合于執(zhí)行所述方法的那些程序元素。如所示,主存儲器706由支持如本文所討論的功能的應(yīng)用(722)進(jìn)行編碼(應(yīng)用722可以是提供本文描述的cd服務(wù)的一些或全部功能的應(yīng)用)。應(yīng)用722(和/或如本文所述的其他資源)可以被實現(xiàn)為軟件代碼,例如,支持根據(jù)本文所述的不同實施例的處理功能的數(shù)據(jù)和/或邏輯指令(例如,存儲在存儲器中或另一計算機可讀介質(zhì)例如磁盤上的代碼)。在一個實施例的操作期間,處理器704通過使用總線702訪問主存儲器706,以啟動、運行、執(zhí)行、解釋或以其他方式執(zhí)行應(yīng)用722的邏輯指令。應(yīng)用722的執(zhí)行產(chǎn)生與應(yīng)用有關(guān)的服務(wù)的處理功能。換句話說,處理724表示在計算機系統(tǒng)700中的處理器704內(nèi)或之上執(zhí)行的應(yīng)用722的一個或多個部分。應(yīng)當(dāng)注意,除了本文所討論的實施(執(zhí)行)操作的處理724之外,本文的其他實施例還包括應(yīng)用722本身(即,未執(zhí)行或非執(zhí)行邏輯指令和/或數(shù)據(jù))。應(yīng)用722可以存儲在諸如磁盤的計算機可讀介質(zhì)(例如,存儲倉庫)上或存儲在光學(xué)介質(zhì)中。根據(jù)其他實施例,應(yīng)用722還可以存儲在諸如固件、只讀存儲器(rom)的存儲器類型系統(tǒng)中,或者如本示例中那樣,存儲為主存儲器706內(nèi)的可執(zhí)行代碼(例如,在隨機存取存儲器或ram內(nèi))。例如,應(yīng)用722還可以存儲在可移除存儲介質(zhì)710、只讀存儲器708和/或大容量存儲設(shè)備712中。本領(lǐng)域技術(shù)人員將理解,計算機系統(tǒng)700可以包括其他處理和/或軟件和硬件組件,諸如控制硬件資源的分配和使用的操作系統(tǒng)。如本文所討論的,本發(fā)明的實施例包括各種步驟或操作。這些步驟可以由硬件組件執(zhí)行或可以在機器可執(zhí)行指令中體現(xiàn),這些指令可以用于使以指令編程的通用或?qū)S锰幚砥鲌?zhí)行所述操作。備選地,步驟可以由硬件、軟件和/或固件的組合執(zhí)行。術(shù)語“模塊”是指自包含的功能組件,其可以包括硬件、軟件、固件或其任何組合。本領(lǐng)域的普通技術(shù)人員將在閱讀本說明書之后容易認(rèn)識和理解,裝置的實施例可以包括可操作以執(zhí)行所描述的處理中的一些(但不一定全部)處理的計算機/計算設(shè)備。存儲程序或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)的實施例包括存儲程序的計算機可讀介質(zhì),所述程序在執(zhí)行時可以使處理器執(zhí)行所描述的處理中的一些(但不一定全部)處理。在本文中描述處理的情況下,本領(lǐng)域的普通技術(shù)人員將理解,處理可以在沒有任何用戶干預(yù)的情況下操作。在另一實施例中,處理包括一些人的干預(yù)(例如,由人或通過人的協(xié)助來執(zhí)行步驟)。如本文所使用的,包括在權(quán)利要求中,短語“至少一些”是指“一個或多個”,并且包括僅一個的情況。因此,例如,短語“至少一些服務(wù)”是指“一個或多個服務(wù)”,并且包括一個服務(wù)的情況。如本文所使用的,包括在權(quán)利要求中,短語“基于”是指“部分地基于”或“至少部分地基于”,而不是排他性的。因此,例如,短語“基于因子x”是指“部分地基于因子x”或“至少部分地基于因子x”。除非使用單詞“僅僅”明確說明,否則短語“基于x”并不意味著“僅基于x”。如本文所使用的,包括在權(quán)利要求中,短語“使用”是指“至少使用”,而不是排他性的。因此,例如,短語“使用x”表示“至少使用x”。除非使用單詞“僅僅”明確說明,否則短語“使用x”并不意味著“僅使用x”。通常,如本文所使用的,包括在權(quán)利要求中,除非在短語中具體使用單詞“僅”,否則不應(yīng)將其讀入該短語中。如本文所使用的,包括在權(quán)利要求中,短語“不同”是指“至少部分不同”。除非另有明確規(guī)定,否則不同并不意味著完全不同。因此,例如,短語“x不同于y”表示“x至少部分不同于y”,并不意味著“x與y完全不同”。因此,如本文所使用的,包括在權(quán)利要求中,短語“x不同于y”表示x至少以某種方式與y不同。如本文所使用的,包括在權(quán)利要求中,列表可以僅包括一個項目,并且除非另有說明,否則不需要以任何特定方式對多個項目的列表進(jìn)行排序。列表可以包括重復(fù)的項目。例如,如本文所使用的,短語“cdn服務(wù)的列表”可以包括一個或多個cdn服務(wù)。應(yīng)當(dāng)理解,說明書和權(quán)利要求中的詞語“第一”和“第二”用于區(qū)分或識別,而不是表明序列或數(shù)字限制。類似地,使用字母或數(shù)字標(biāo)簽(例如“(a)”、“(b)”等)用于幫助區(qū)分和/或識別,而不表示任何序列或數(shù)字限制或排序。除非另有明確說明,否則任何流程圖中的任何標(biāo)簽框不暗示排序。當(dāng)圖中顯示斷開的框時,與這些框相關(guān)聯(lián)的活動可以以任何順序執(zhí)行,包括完全并行或部分并行。雖然已經(jīng)結(jié)合當(dāng)前認(rèn)為最實際和優(yōu)選的實施例來描述了本發(fā)明,但是應(yīng)該理解本發(fā)明不限于所公開的實施例,相反,本發(fā)明旨在覆蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。當(dāng)前第1頁12