該申請要求提交于2014年7月16日的美國臨時專利申請62/025,021和提交于2015年1月8日的美國臨時專利申請62/100,933的權益,其公開內容通過引用并入本文。
發明領域
本發明總體上涉及內容分發,尤其是涉及用于將內容分發到通信終端的方法和系統。
發明背景
在本領域中已知用于將內容分發到無線用戶的各種技術。例如,公開內容通過引用并入本文中的美國專利8,601,052描述了用于對無線便攜式計算設備(PCD)執行內容預取的方法和系統。
另一示例,公開內容通過引用并入本文中的美國專利申請公布2010/0161831描述了內容和流量管理系統。移動設備經由通信鏈路可連接到用戶和內容提供商。系統隨著時間跟蹤各種參數,并調度與響應于用戶內容相關的行為、用戶通信行為、用戶外部行為和通信鏈路參數的預定義或投射的內容有關的通信。
發明概述
文中所描述的本發明的實施例提供了用于內容分發的方法,包括定義保證的預取方式,在所述保證的預取方式中內容被連續地從內容源預取到用戶的通信終端,以便維持通信終端與內容源同步。一個或多個時間間隔被識別,用戶預期將在所述一個或多個時間間隔期間訪問給定內容。在所識別的時間間隔期間,使用保證的預取方式將給定內容從內容源預取到通信終端。
在一些實施例中,該方法還包括定義不同于保證的預取方式的盡力而為的預取方式(best-effort prefetching mode),以及在所識別的時間間隔以外使用盡力而為的預取方式將給定內容預取到通信終端。在實施例中,使用保證的預取方式預取包括預取小于閾值百分比的被檢測為已改變的內容項目,以及使用盡力而為的預取方式預取包括預取大于閾值百分比的被檢測為已改變的內容項目。
在一些實施例中,使用保證的預取方式預取給定內容包括在所識別的時間間隔期間連續檢測給定內容中的改變,和將改變或改變的內容預取到通信終端。檢測改變可包括連續抓取內容源上的內容項目。另外地或可替代地,檢測改變可包括從內容源接收指示改變的通知。
在實施例中,識別時間間隔包括通過安裝在通信終端中的軟件代理監控通信終端的使用模式,和基于該使用模式識別時間間隔。在另一實施例中,識別時間間隔包括監控內容源中的內容改變的時間模式,和基于該內容改變的模式來識別時間間隔。
在又一實施例中,該方法包括響應于內容項目的瞬時特征而決定使用保證的預取方式來預取內容項目。在公開的實施例中,預取給定內容包括將一個或多個候選內容項目指示給通信終端用以預取、通過通信終端選定候選內容項目中的一個或多個以及通過通信終端預取所選定的內容項目。
在另一實施例中,預取給定內容包括將待預取的內容項目的第一簽名指示給通信終端、通過通信終端預取內容項目、對預取的內容項目計算第二簽名以及僅在第一簽名匹配第二簽名時將內容項目緩存在通信終端中。在一些實施例中,該方法包括將呈現給用戶的一個或多個內容項目在視覺上標記為被預取的。
根據本發明的實施例,另外還提供有包括接口和一個或多個處理器的內容分發系統。接口被配置用于與內容源和用戶的通信終端進行通信。該一個或多個處理器被配置為保存保證的預取方式的定義,在保證的預取方式中內容被連續地從內容源預取到通信終端,以便維持通信終端與內容源同步,識別一個或多個時間間隔,用戶預期將在所述一個或多個時間間隔期間訪問給定內容,并且,在所識別的時間間隔期間,使用保證的預取方式將給定內容從內容源預取到通信終端。
根據本發明的實施例,還提供有計算機軟件產品,該產品包括其中儲存程序指令的有形的非暫時性計算機可讀介質,當該指令由與內容源和用戶的通信終端進行通信的內容分發系統的一個或多個處理器讀取時,使該一個或多個處理器保存保證的預取方式的定義,在保證的預取方式中內容被連續地從內容源預取到通信終端,以便維持通信終端與內容源同步,自動識別一個或多個時間間隔,用戶預期將在所述一個或多個時間間隔期間訪問給定內容,并且,在所識別的時間間隔期間,使用保證的預取方式將給定內容從內容源預取到通信終端。
從結合附圖進行的本發明的實施例的以下詳細描述中,本發明將被更充分地理解,其中:
附圖簡述
圖1是根據本發明的實施例示意性圖示內容分發系統的框圖;以及
圖2是根據本發明的實施例示意性說明用于內容分發的方法的流程圖。
具體實施方式
綜述
文中所描述的本發明的實施例提供了用于將內容分發到智能電話、平板電腦和其他無線通信終端的方法和系統。在所公開的實施例中,內容分發系統預取來自諸如網站的內容源的內容,以通過無線通信終端進行消費。對于給定終端和給定內容,系統使用至少兩種操作方式-保證的預取方式和盡力而為的預取方式。
在保證的預取方式中,系統連續跟蹤給定內容中的改變,并確保在終端中緩存的內容與內容源處的內容連續同步。例如,通過連續抓取給定內容的內容項目(例如,網頁)和預取已經改變的任何內容項目,可實現這種連續的同步。當在保證的方式下運行時,訪問給定內容的用戶請求將以非常高的概率從終端的緩存供給,從而提供小的延遲和增強的用戶體驗。
在盡力而為的預取方式中,沒有給出這樣的保證,并且預取使用可用資源被盡可能(as feasible)執行。盡力而為的方式招致比保證的方式顯著減少的系統資源,但另一方面,由于更高概率的緩存缺失而要求從內容源預取內容,給出了降低的用戶體驗。
對于給定終端和給定內容,系統通常識別一個或多個時間間隔,用戶預期將在所述一個或多個時間間隔期間訪問內容。系統在所識別的時間間隔期間使用保證的方式,否則使用盡力而為的方式,將內容預取到終端。在各種實施例中,系統基于各種因素,諸如隨著時間推移的用戶的內容消費模式、隨著時間推移的用戶的地理位置模式、以及在不同時間和位置處的不同無線連接性選項的可用性,來自動識別時間間隔。例如,可使用安裝在終端中的軟件代理來研究這些特性。
所公開的技術通常用于服務消費來自各種內容源的多種多樣內容的大量終端。通過使用所公開的技術,在實際上內容被需要的所選定的時間期間,給每個用戶保證的快速內容訪問。在其他時間,系統資源被分配給其他用戶。因此,所公開的技術在最大化可用通信和內容分發資源的利用上是高度有效的,同時保留高質量的用戶體驗。
系統描述
圖1是根據本發明的實施例示意性圖示內容分發系統20的框圖。系統20預取來自一個或多個內容源24的內容,以供由用戶32操作的一個或多個無線通信終端28使用。例如,此類系統可由內容提供商或由無線服務提供商操作。
例如,內容源24可包括網站、門戶、內容分發網絡(CDN)、數據中心或任何其他合適類型的數據源。例如,終端28可包括蜂窩電話、智能電話、平板電腦、筆記本電腦或能夠向用戶呈現內容并具有無線通信能力的任何其他合適的設備。在當前背景下,術語“預取”指內容從內容源到無線終端的傳遞,其不響應于用戶對于該內容的直接請求來執行。
系統20的各個組成部分,以及內容源24和終端28,通過一個或多個有線或無線通信網絡相互通信。在本示例中,內容源24通過互聯網36來訪問,并且終端28經由無線網絡40(例如,蜂窩網絡)訪問互聯網。因此,從內容源到終端的端到端的內容路徑通常包括有線和無線鏈路兩者。
在圖1的示例中,系統20包括連接到互聯網的預取子系統56和預取設置單元52,以及安裝在每個終端28中的各自的預取代理44。每個終端28還包括各自的內容緩存48,用于臨時儲存內容項目。被緩存在緩存48中的內容項目(例如,網頁)能夠以小的延遲供給用戶32(例如,顯示在瀏覽器上或在終端中運行的App上),而不會招致來自內容源24的內容檢索的延遲。
預取子系統56包括用于連接到互聯網36的網絡接口60、爬蟲(crawler)64和內容提供單元68。爬蟲64被配置為抓取數據源24中的內容項目、檢測內容中的改變并檢索所選定的內容項目。內容提供單元68被配置為給終端中的代理44通知用于預取的可用內容,以與代理44來協調該內容的傳遞,并先于分發對內容進行預處理。在當前背景下,術語“改變”指其內容已被更新的現有內容項目和新生成的內容項目兩者。
在各種實施例中,提供單元68可使用多種有效的現有技術,諸如用于安卓設備的谷歌云端推送(GCM)服務或用于iOS設備的蘋果推送通知(APN),以將通知發送到代理44。
代理44通常被配置為管理緩存48,以攔截在終端28中生成的內容請求,并適當地從緩存或從內容源供給所請求的內容。在一些實施例中,代理44還被配置為跟蹤使用模式用于輔助預取操作,如以下將要描述的。例如,代理44可跟蹤隨著時間變化的用戶的內容消費模式、隨著時間變化的終端的地理位置、和在不同時間的不同通信能力的可用性(例如,Wi-Fi對蜂窩接入的可用帶寬或可用性)。代理44還可跟蹤各種可用的通信信道(例如,Wi-Fi或蜂窩)的特性,諸如擁堵等級、速度、延遲、接收器的信噪比(SNR)、接收器的信道質量指示(CQI)和/或任何其他合適的參數。
代理44通常將所收集的信息提供給預取設置單元52。在一些實施例中,代理44可跟蹤、記錄和報告額外的信息,諸如終端狀態(例如,電池狀態、可用的存儲器或CPU資源、或錯誤事件)或網絡狀態(網絡速度和負載、或Wi-Fi連接性的可用性)。
根據由預取設置單元52提供的高層次預取策略,代理44可利用一些收集的信息來決定是否預取內容。例如,代理44可僅在當前接收器的SNR值高于由預取設置單元52提供的某一閾值時決定預取內容。
預取設置單元52通常被配置為基于可用的信息來決定在什么時間和使用哪種預取方式為哪一終端預取哪一內容。下面更詳細地對不同的預取方式的使用進行描述。
圖1中所示出的系統20的配置及其各個組成部分是示例配置,選定它們僅出于概念清晰的目的。在可替代實施例中,可使用任何其它合適的配置。例如,預取子系統56和預取設置單元52的功能能夠使用任意所需數量的處理器或甚至以單一處理器來實現。各個系統功能能夠以任何合適的方式在處理器間劃分開。在一個實施例中,預取設置單元52被實現為云應用。
在另一實施例中,單元52的功能可在云應用和用戶終端中的預取代理44之間分開。在這樣的實施例中,云應用可基于使用模式來做出預取決定,但代理44可基于可用的電池功率或其他本地參數來重寫這些決定。換句話說,根據任何合適的標準,云應用對于代理44可識別候選內容項目用以預取,并且代理44可選定并預取候選項目中的一個或多個。通過這種方式,減少或消除從代理44向單元52報告本地參數的需要是可能的。
另一示例是,預取代理44可以以各種方式攔截終端28中的內容請求。在一個實施例中,代理44被嵌入在運行于終端28中的應用中,或作為軟件開發工具包(SDK)嵌入在應用中。在另一實施例中,終端28可運行代理服務器,該代理服務器由代理44控制并暴露于傳入和傳出的流量。另外可替代地,所公開的技術能夠在沒有代理的情況下完全在網絡端上實現。
雖然本文中所描述的實施例主要指人類用戶32,但術語“用戶”還指機器用戶。例如,機器用戶可包括使用無線通信的各種主機系統,諸如在各種物聯網(IoT)應用中。
系統20的不同組成部分可使用合適的軟件、使用合適的硬件(例如,使用一個或多個專用集成電路(ASIC)或現場可編程門陣列(FPGA))、或使用硬件和軟件組成部分的組合來實現。緩存48可使用任何合適的存儲器或儲存設備來實現。在一些實施例中,使用一個或多個通用處理器來實現代理44、預取設置單元52、爬蟲64和/或提供單元68,一個或多個通用處理器用軟件來編程以執行本文中所描述的功能。例如,可通過網絡以電子形式將軟件下載到處理器,或者可替代地或另外地,該軟件可被提供和/或儲存在非暫時性有形媒介上,諸如磁存儲器、光學存儲器或電子存儲器。
使用保證的和盡力而為的預取方式的內容分發
考慮由某一用戶32操作的某一終端28。在許多實際情況下,特定用戶32根據某種可預測的時間使用模式使用終端28來訪問內容。例如,用戶通常將在特征時間訪問特定數據源(例如,網站),或甚至特定數據源內的特定內容項目(例如,網頁)。用戶和終端也可根據某種可預測的時間模式在地理上移動。終端的地理位置在不同的時間可對可用的通信信道的質量具有影響。
另外地或可替代地,終端可用的通信資源(例如,Wi-Fi對蜂窩接入或高對低的帶寬)也可根據某種可預測的時間模式而變化。其他類型的使用模式可從終端28的各種傳感器的讀數中獲得。例如,加速計讀數可以指示終端28長時期是靜止的,這可能導致用戶很有可能是不活躍的且沒有理由為其預取內容的結論。
以上所列出的所有時間模式以及其他合適的模式在本文中統稱為使用模式。在當前背景下,術語“時間模式”指跟隨時間顯示出某種特征行為的任何時間模式。一些時間模式在不同日子可以不同,例如,在工作日和周末或在一個月的不同日子呈現不同的行為。在一些公開的實施例中,系統20學習不同用戶和終端的使用模式,并使用該信息以優化到終端的內容的預取。
在一些實施例中,系統20定義保證的預取方式和盡力而為的預取方式,以用在從數據源24預取內容到終端28的緩存存儲器48。在保證的方式中,預取子系統56連續跟蹤內容中的改變,且提供單元68確保在終端的緩存48中所緩存的內容與內容源處的內容連續同步。在盡力而為的方式中,預取子系統56盡可能使用可用的資源預取內容。
通常,當使用保證的預取方式時,系統20預取少于閾值百分比的被檢測為已改變的內容項目。另一方面,當使用盡力而為的預取方式時,系統20通常預取多于閾值百分比的被檢測為已改變的內容項目。例如,閾值百分比可包括80%、90%或任何其他合適的值。
在一些實施例中,被預取的內容或當前處于保證的預取方式中的內容本身能夠由代理44在視覺上進行標記,使得用戶將會注意到它。例如,視頻片段的圖像上的特定圖標可在視覺上向用戶標記該片段被系統預取,且因此用戶應期待該片段的完美呈現。
在一些實施例中,不管任何特定的終端、用戶、使用模式或操作方式,爬蟲64都抓取內容源24并檢測內容改變。另一方面,取決于使用模式和取決于終端當前是運行在保證的預取方式下還是運行在盡力而為的預取方式下,對于每個終端,提供單元68操作不同。
應注意到的是,即使在保證的預取方式下,例如由于跨越系統的各種延遲,一定殘余度的錯誤同步可能仍保留在內容源24和緩存48之間。這種殘余的錯誤同步通常非常小,因此仍被視為“保證的預取”。不管公開的預取方案,這樣的延遲都可能存在于傳統的用戶對網絡的訪問中。
另外地或可替代的,一定水平的最大允許的預取“成本”可為保證的預取方式預先指定,以便當預料預取會招致超出預先所指定的成本的資源時,內容將不會被預取。這樣的成本可根據用于預取所需的電池能量(例如,如果所需的能量超過閾值則不預取)、整體的電池水平(例如,如果電池能量水平低于閾值則不預取)或任何其他合適的資源來定義。
另外地或可替代地,系統20可指定某些類型的內容項目即使在保證的預取方式下,即使改變了,也不必預取。就這樣的內容項目而言缺乏同步仍被認為是“保證的預取”。例如,不需要預取的內容項目可包括對講或由用戶消費的概率足夠小的其他項目。
因此,保證的方式具有比盡力而為的方式顯著更低的緩存缺失概率(由用戶請求的內容將不會在緩存48中找到且將需要從內容源預取的顯著更低的概率)。在任一方式中,爬蟲64的抓取調度(例如,更新周期和/或抓取的順序)可基于該內容源中的內容改變的過去模式和/或基于用戶的使用模式(例如,由單元52)來設置。
對于給定終端和給定內容(例如,給定網站或網站集合、或指定的網頁或網站內的域),保證的和盡力而為的方式之間的更替基于終端的使用模式、內容的改變模式和/或終端和內容的瞬時狀況由預取設置單元52指定。
單元52通常識別一個或多個時間間隔,在所述一個或多個時間間隔期間,用戶典型地訪問給定內容。單元52通知預取子系統56所識別的時間間隔。子系統56在所識別的時間間隔期間使用保證的方式,并在所識別的時間間隔以外使用盡力而為的方式,將給定內容預取到終端。
在一些實施例中,單元52在選定關于保證的預取的時間間隔時,除了使用模式之外還可考慮額外的因素。例如,這樣的額外因素可包括,內容項目的瞬時特征,諸如給定內容項目的瞬時評級或受歡迎度。對于給定用戶的內容項目的評級可例如通過單元52在各種用戶組上,諸如已知與給定用戶具有相似品味、內容消費習慣或行為模式的用戶,來確定。
例如,考慮瞬時評級非常高的內容項目,諸如重要的體育比賽。在實施例中,這樣的事件(occurrence)使預取設置單元52將終端28切換到保證的預取方式,已知該終端的用戶32潛在地對這樣的內容感興趣。即使情況不匹配用戶的典型使用模式或位置模式,切換也可以發生。
如以上所描述的,單元52在選定用于保證的預取的時間間隔時可考慮的額外的因素包括終端的瞬時狀況,諸如電池狀況、數據計劃狀況或傳感器讀數。在這樣的實施例中,單元52的目的可以是降低終端的通信成本(例如,通過考慮用戶的價格計劃和通信速率)、降低由內容源招致的內容成本或降低電池能耗。如上所述,單元52還可考慮當前內容項目的瞬時評級、或已知與給定用戶具有相似行為模式的其他用戶的行為。
如上所述,單元52可得出結論,一些用戶呈現出罕見和/或零星的內容使用。單元52可決定,在改進這些用戶的用戶體驗上,投資資源是不符合成本效益的。對于這樣的用戶,單元52可選定沒有間隔的連續保證的方式,或甚至是完全沒有預取。
可以理解,保證的方式消耗相當多的系統資源——例如,爬蟲64的資源,在內容源24、子系統56和終端28中的通信開銷等。通過將該方式的使用限制于選定的時間間隔,能夠有效地利用系統資源,所述選定的時間間隔在不同的終端中通常不同。
圖2是根據本發明的實施例示意性說明用于內容分發的方法的流程圖。在使用學習步驟80,方法以預取設置單元52在訪問給定內容時學習給定終端的使用模式開始。如以上所解釋的,學習步驟通常基于由代理44提供的信息、可由爬蟲64提供的與內容改變模式有關的信息、和/或與瞬時內容項目特征有關的信息。
基于該信息,在間隔選定步驟84,單元52指定一個或多個時間間隔用于給定內容到給定終端的保證的預取。如果發現給定終端不活動或很少活動,則單元52可避免給其分配用于保證的預取的任何時間間隔。
在抓取步驟86,爬蟲64抓取內容源24并檢測內容中的改變。在時間檢查步驟88,預取子系統56檢查當前的時間是否在所指定的時間間隔中的一個內。如是是,則在保證的預取步驟92,子系統56使用保證的預取方式將給定內容預取到給定終端的緩存48。否則,即,如果當前時間在所指定的時間間隔以外,則在盡力而為的預取步驟96,子系統56使用盡力而為的預取方式,將給定內容預取到給定終端。在任一情況下,方法隨后循環返回到步驟80,其中單元52繼續學習和更新所討論的上述終端的使用模式。
另外的變型和實施例
在各種實施例中,內容提供單元68和代理44可使用各種協議,以協調預取內容的傳遞。在一些實施例中,單元68向代理44發送通知,所述通知指示在緩存48中過期的內容項目(因為爬蟲64已經識別出內容源24中的相應的內容項目已經改變)。代理44響應于所述通知請求來自單元68的最新的內容項目。
在示例實施例中,單元68向代理44發送目錄,其列出了對于給定時間點的過期的內容項目。在可選的實施例中,單元68向代理44發送目錄,其保存了各種內容項目(例如,用戶感興趣的所有內容項目)的最新版本號。對于每個內容項目,代理44決定其保存的版本是否過期,并且如果過期,則可預取新的版本。后者的實施有時是優選的,因為單元68可能不總是具有關于哪個內容項目的哪個版本在緩存48中是可用的完整信息。例如,單元68可能不知道從緩存48刪除的項目和已經失敗的先前的預取嘗試。
在一些實施例中,預取操作本身不必涉及單元68。例如,代理44可從其他網站或內容源預取過期的內容項目。在實施例中,從單元68發送的目錄指示位置(例如,URL或URI),代理44應從該位置預取內容項目。
在一些實施例中,從單元68發送到代理44的目錄可為每個內容項目指定各自的似然度。具有高似然度的項目即使成本高(例如,不顧緩慢的蜂窩連接)也可由代理44預取,反之,具有較低似然度的項目僅可在較低成本下(例如,當免費高速Wi-Fi連接可用時)才可預取。
在一些實施例中,從單元68發送到代理44的目錄包括用于驗證將由代理44預取的內容項目的正確性的手段。例如,這樣的手段可包括對正確的內容項目計算的簽名,諸如循環冗余校驗(CRC)值、消息摘要5(MD5)散列值或其他錯誤檢測代碼。在這些實施例中,在預取內容項目之后,代理44對預取的項目計算簽名,將其與目錄中的簽名進行比較,并僅當兩個簽名匹配時將預取的項目保存在緩存48中。該技術對于例如消減預取服務上的各種攻擊和對于大體上消減錯誤預取是有用的。
在以上的示例中,給定內容的保證的預取限于選定的時間間隔。另外,在實施例中,系統20可將特定內容定義為擔保的連續保證預取。系統20通常將無條件地使用保證的預取方式來預取該特定內容,而不管當前時間落入選定的時間間隔以內還是以外。
在將內容分發到終端28之前,內容提供單元68可以以各種方式提供從內容源24檢索的內容。例如,單元68可壓縮內容以便減小通信帶寬。任何合適的壓縮方案都能夠用于該目的。在示例實施例中,單元68可僅發送相對于已經緩存在終端中的內容的差異,或相對于先前緩存的內容對內容進行壓縮。
另一示例是單元68可以以促進其在終端處的分發或消費的方式來操縱內容。例如,如果內容包括客戶端側的腳本(例如,嵌入在HTML頁面中的JavaScript腳本),單元68可運行該客戶端側的腳本,獲取由腳本訪問的任何另外的內容,并相應修改HTML頁面。換句話說,單元68可將初始包含客戶端側腳本的內容項目分發到終端28,并且即使腳本實際上通過單元68在網絡側上運行,在用戶看來該腳本也好像如預期一樣在客戶端側上運行。
在其他實施例中,單元68在將內容項目發送到代理44之前對該內容項目進行加密,并且代理44對接收的內容項目進行解密。加密對于例如消減預取服務上的攻擊和對于增強版權保護是有用的。
在其他實施例中,單元68可操縱內容項目,以促進到多個終端28的有效傳輸。例如,單元68可將內容項目劃分成共有部分(例如,由門戶的所有用戶消費的給入)和用戶特定部分(例如,僅一部分用戶感興趣的物品)。隨后,單元68可通過廣播信道將共有部分一道傳輸給多個用戶,而不是將相同的內容部分分別發送給每個用戶。廣播信道的示例可包括長期演進(LTE)蜂窩標準的演變的多媒體廣播組播服務(eMBMS)信道。
在一些實施例中,代理44可在終端28不活動時,例如,在空閑狀態時,或當嵌入代理的應用未激活時運行。例如,代理44可偶爾喚醒終端28的至少部分、執行預取和/或測量并切換返回到空閑狀態,這些對于用戶都是透明的。在實施例中,代理44試圖使其喚醒周期中的至少一些與終端的操作系統的那些周期協調,以便減少能耗。
當從單元68接收到指示過期緩存的內容項目的通知時,代理44和單元68可應用任何合適的預取策略,以用于預取內容項目的更新版本。在一些實施例中,更新的內容項目可連同(或代替)通知被發送。該策略可能對于小的內容項目來說(或對于內容項目中的小的差異來說,例如,當使用差異壓縮時)是有利的。對于大的內容項目,可以優選的是,首先發送通知,然后允許代理44在選定用于預取的優選時間時有一定靈活性(例如,當合適的網絡類型或狀況或設備資源是可用的時)。預取策略通常是終端特定的。
在實施例中,單元52負責生成終端特定的預取策略并將其(例如,偶爾或周期地)發送給代理44。例如,可基于由從代理44所發送的使用模式和其他信息得出的對用戶32、終端28和網絡40的行為的學習,來對策略進行定義。另外地或可替代地,可基于由爬蟲64學習和報告的內容源24的行為,來對策略進行定義。例如,內容源行為可涉及內容的改變模式、改變的大小和其他因素。
另外地或可替代地,單元52可根據標準,諸如改進用戶體驗、降低通信成本或減小功耗,來對預取策略進行定義。例如,單元52可優先將保證預取時間間隔設置為終端連接到Wi-Fi的時間(并且因此具有低成本下的高帶寬),或設置在信道和網絡狀況都有利的時間(并且因此,內容能夠以高數據速率和低能耗來傳遞)。另外地或可替代地,當內容可用于從兩個或更多個內容源(例如,不同的CDN)預取時,單元52可在可選的源之中選定最低成本的源。最低成本的內容源很可能是高延遲源,但當使用預取時該事實通常不影響用戶體驗。
在一些實施例中,可省略爬蟲64。例如,在一些實施例中,內容源給系統20(例如,單元52和/或子系統56)提供內容改變的明確通知。在這種情況下,這些通知可直接觸發預取而無需抓取內容源。另一示例是,數據源可生成RSS給入,在該情況下,能夠監控RSS給入而不是內容項目本身。又一示例是,內容源可保存內容或給入的狀態的索引(例如,XML文件)。內容源可通知系統20索引的改變,避免了抓取的需要。另外地或可替代地,系統20響應于內容改變的任何其他合適的指示可觸發預取。
在以上的圖1的描述中,爬蟲64檢索并向內容提供單元68分發內容項目的更新版本。在可選實施例中,爬蟲可分發指向已經改變的內容項目的位置的指針(例如,統一資源標識-URI)而不是實際的內容。單元68將指針分發到終端28中的代理44,該代理44隨后使用指針來檢索更新的內容項目。
在一些實施例中,爬蟲64僅抓取數據源(或給入)的主要頁面。在可替代的實施例中,爬蟲64還抓取內部的較低層次的頁面。抓取深度還可由單元52指定為預取策略的一部分。
預取子系統56可使用任何合適的技術來向代理44發出內容項目過期的信號。例如,每個內容項目可被分配版本號,該版本號在內容更新時遞增。內容源中的版本號比終端28的緩存48中的版本號更新的內容項目可被認為是過期的。預取子系統56可使用版本號,以用于僅發送舊的和新的版本之間的差異,同時保持數據完整性。
在實施例中,單元68可識別以快的速率有規律地更新的內容項目(例如,與正在進行的體育事件有關的內容),并將它們標記為“非版本化的”。在該實施例中,每當代理44獲取其他內容項目時,它就將預取非版本化的內容項目,但不以其他方式,或者可替代地避免全部預取這樣的項目并將它們從緩存中刪除。一旦給定的非版本化內容項目的頻繁的改變停止,單元68就可恢復到將版本號分配給內容項目,并相應地對它進行處理。在消費非版本化的數據項目的應用啟動期間,如果無線網絡是可用的,則代理44將從內容源中實時獲取該非版本化的數據項目。如果無線網絡不可用,則將供應最近緩存的副本。
雖然本文中所描述的實施例主要解決了用于無線終端的內容預取,但是本文中所描述的方法和系統也可用在其他應用中,諸如用于線路終端(諸如具有到互聯網的線路連接的個人計算機)的預取中。
雖然本文中所描述的實施例主要指從網站預取,但所公開的教導還可用于從各種媒介實體預取內容。這樣的媒介實體,其在本文中還被視為內容源的類型,例如可包括處理內容項目的其他移動設備、計算機服務器、代理服務器緩存或任何其他合適的實體。當媒介包括另一移動設備時,內容可利用直接的設備到設備的無線鏈路來取得。
因此,應理解上述實施例是通過實例引用的,本發明并不限于上文已具體示出和描述的內容。相反,本發明的范圍包括上文所描述的各種特征以及本領域技術人員在閱讀以上描述之后將想到的且未在現有技術中公開的其變型和修改的組合和子組合。通過引用結合在本專利申請中的文檔被視為本申請的組成部分,除了在這些結合的文檔中定義的任何術語與本說明書中明確地或隱含地作出的定義沖突時,僅應考慮本說明書中的定義。