(57)【要約】機器（２４，６０）はネットワークインタフェース（６４）と１つ以上のプロセッサ（４４，６８）を含む。ネットワークインタフェースは通信ネットワーク（３２）を介して通信するように構成される。１つ以上のプロセッサは、通信ネットワークを介して、コンテンツソース（２８）からユーザ装置（２４）のキャッシュメモリ（５２）にコンテンツアイテムをプリフェッチし、ここでコンテンツアイテムのうち少なくとも１つのコンテンツアイテムは、コンテンツソースによって指定されたキャッシュディレクティブを有するステップと、コンテンツソースによって指定されたキャッシュディレクティブを修正し、そして修正されたキャッシュディレクティブを有するコンテンツアイテムを、ユーザ装置において実行されているユーザアプリケーション（３６）に提供し、それによりユーザアプリケーションに対し修正されたキャッシュディレクティブに応答してコンテンツアイテムを処理させるステップ、を実行するように構成される。【選択図】図１
2019537085.tif 000002
【特許請求の範囲】
【請求項１】
機器であって、
通信ネットワークを介して通信するためのネットワークインタフェースと；そして
１つ以上のプロセッサと；
を有し、前記プロセッサは：
前記通信ネットワークを介して、コンテンツソースからユーザ装置のキャッシュメモリにコンテンツアイテムをプリフェッチし、
ここにおいて前記コンテンツアイテムのうち少なくとも１つのコンテンツアイテムは、前記コンテンツソースによって指定されたキャッシュディレクティブを有し；そして
前記コンテンツソースによって指定された前記キャッシュディレクティブを修正し、そして前記修正されたキャッシュディレクティブを有する前記コンテンツアイテムを、前記ユーザ装置において実行されているユーザアプリケーションに提供し、それにより前記ユーザアプリケーションに対し前記修正されたキャッシュディレクティブに応答して前記コンテンツアイテムを処理させる；
ように構成される、ことを特徴とする機器。
【請求項２】
前記キャッシュディレクティブは、前記コンテンツアイテムがプリフェッチされるアプリケーション層プロトコルのメッセージのヘッダ内で指定され、前記プロセッサは、前記ヘッダを修正することによって前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１に記載の機器。
【請求項３】
前記アプリケーション層プロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を含む、ことを特徴とする請求項２に記載の機器。  
【請求項４】
前記キャッシュディレクティブは、「最長期間（Ｍａｘ−ａｇｅ）」、「有効期限（Ｅｘｐｉｒｅｓ）」タイムスタンプ、「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」および「記憶せず（Ｎｏ−ｓｔｏｒｅ）」からなるグループから選択される、ことを特徴とする請求項３に記載の機器。
【請求項５】
前記コンテンツソースによって指定された前記キャッシュディレクティブは、前記コンテンツアイテムが最新のものではないことを示し、そして前記プロセッサは、前記コンテンツアイテムが最新のものであることを示すように前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項６】
前記プロセッサは、保証型プリフェッチモードで動作している間にのみ前記キャッシュディレクティブを変更し、ベストエフォートプリフェッチモードで動作している間には変更しない、ように構成されることを特徴とする請求項１または２に記載の機器。
【請求項７】
前記プロセッサは、現在のプリフェッチモードが前記保証型プリフェッチモードであるか、または前記ベストエフォート型プリフェッチモードであるかに少なくとも部分的に基づいて、前記キャッシュディレクティブを修正するか否かを決定するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項８】
前記プロセッサは、前記プリフェッチされたコンテンツアイテムをユーザに提示し、そして前記提示されたコンテンツアイテムが最新であるか否かを、前記通信ネットワークを介して並行して検証するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項９】
前記プロセッサは、前記コンテンツソース上の前記コンテンツアイテムに対する変更を追跡し、前記追跡された変更に基づいて前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１０】
前記プロセッサのうちの少なくとも１つは、前記ユーザ装置のプロセッサである、ことを特徴とする請求項１または２に記載の機器。
【請求項１１】
前記プロセッサは、前記ユーザ装置のオペレーティングシステム内で動作するソフトウェアコンポーネントを少なくとも部分的に使用して、前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１０に記載の機器。
【請求項１２】
前記プロセッサのうちの少なくとも１つは、前記ユーザデバイスの外部にあるネットワーク側ノードのプロセッサである、ことを特徴とする請求項１または２に記載の機器。
【請求項１３】
前記プロセッサは、前記ネットワークの側のノードで実行されているソフトウェアコンポーネントを少なくとも部分的に使用して前記キャッシュディレクティブを修正するように構成されている、ことを特徴とする請求項１２に記載の機器。
【請求項１４】
前記プロセッサは、前記キャッシュディレクティブを削除すること、または前記コンテンツアイテムを搬送するメッセージのヘッダの少なくとも一部を削除することによって前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１５】
前記プロセッサは、前記キャッシュディレクティブを置き換えること、または前記コンテンツアイテムを搬送するメッセージのヘッダの少なくとも一部を置き換えることによって前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１６】
前記プロセッサは、前記コンテンツアイテムを搬送するメッセージのヘッダに、「記憶せず（Ｎｏ−ｓｔｏｒｅ）」または「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」のキャッシュディレクティブを追加することによって前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１７】
前記プロセッサは、前記プリフェッチされたコンテンツアイテムを前記ユーザ装置の前記キャッシュメモリにキャッシングする前に前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１８】
前記プロセッサは、前記プリフェッチされたコンテンツアイテムが前記ユーザ装置の前記キャッシュメモリに存在する間に前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項１または２に記載の機器。
【請求項１９】
前記プロセッサは、前記ユーザアプリケーションにサービスを提供するために前記ユーザ装置の前記キャッシュメモリから前記プリフェッチされたコンテンツアイテムを取り出す際に前記キャッシュディレクティブを修正するように構成される、請求項１または２に記載の機器。
【請求項２０】
通信ネットワークを介して、コンテンツソースからユーザ装置のキャッシュメモリにコンテンツアイテムをプリフェッチするステップであって、前記コンテンツアイテムのうち少なくとも１つのコンテンツアイテムは、前記コンテンツソースによって指定されたキャッシュディレクティブを有する、ステップと；そして
前記コンテンツソースによって指定された前記キャッシュディレクティブを修正し、そして前記修正されたキャッシュディレクティブを有するコンテンツアイテムを、前記ユーザ装置で実行されているユーザアプリケーションに提供し、それにより前記ユーザアプリケーションに対し、前記修正されたキャッシュディレクティブに応答して前記コンテンツアイテムを処理させるステップと；
を有することを特徴とする方法。
【請求項２１】
前記キャッシュディレクティブは、前記コンテンツアイテムがプリフェッチされているアプリケーション層プロトコルのメッセージのヘッダ内で指定され、前記プロセッサは、前記ヘッダを修正することによって前記キャッシュディレクティブを修正するように構成される、ことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記アプリケーション層プロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を有する、ことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記キャッシュディレクティブは、「最長期間（Ｍａｘ−ａｇｅ）」、「有効期限（Ｅｘｐｉｒｅｓ）」タイムスタンプ、「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」および「記憶せず（Ｎｏ−ｓｔｏｒｅ）」からなるグループから選択される、ことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記コンテンツソースによって指定された前記キャッシュディレクティブは、前記コンテンツアイテムが最新のものではないことを示し、そして前記キャッシュディレクティブを修正するステップは、前記コンテンツアイテムが最新のものであることを前記キャッシュディレクティブによって示すステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項２５】
前記キャッシュディレクティブを修正するステップは、保証されたプリフェッチモードで動作している間にのみ実行され、ベストエフォートプリフェッチモードで動作している間には実行されない、ことを特徴とする請求項２０または２１に記載の方法。
【請求項２６】
現在のプリフェッチモードが前記保証型プリフェッチモードであるか前記ベストエフォートプリフェッチモードであるかに少なくとも部分的に基づいて、前記キャッシュディレクティブを修正するか否かを決定するステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項２７】
前記プリフェッチされたコンテンツアイテムをユーザに提示するステップと、そして提示されたコンテンツアイテムが最新であるか否かを前記通信ネットワークを介して並行して検証するステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項２８】
前記キャッシュディレクティブを修正するステップは、前記コンテンツソース上の前記コンテンツアイテムに対する変更を追跡するステップと、そして前記追跡された変更に基づいて前記キャッシュディレクティブを修正するステップとを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項２９】
前記キャッシュディレクティブを修正するステップは、少なくとも部分的に、前記ユーザデバイスのオペレーティングシステム内で実行されているソフトウェアコンポーネントを使用して実行される、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３０】
前記キャッシュディレクティブを修正するステップは、少なくとも部分的に、前記ユーザデバイスの外部にあるネットワーク側ノードによって実行される、ことを請求項２０または２１に記載の方法。
【請求項３１】
前記キャッシュディレクティブを修正するステップは、前記キャッシュディレクティブを削除するステップ、または前記コンテンツアイテムを運ぶメッセージのヘッダの少なくとも一部を削除するステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３２】
前記キャッシュディレクティブを修正するステップは、前記キャッシュディレクティブを置き換えるステップ、または前記コンテンツアイテムを運ぶメッセージのヘッダの少なくとも一部を置き換えるステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３３】
前記キャッシュディレクティブを修正するステップは、前記コンテンツアイテムを運ぶメッセージのヘッダに、「記憶せず（Ｎｏ−ｓｔｏｒｅ）」または「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」のキャッシュディレクティブを追加するステップを有する、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３４】
前記キャッシュディレクティブを修正するステップは、前記プリフェッチされたコンテンツアイテムを前記ユーザ装置の前記キャッシュメモリにキャッシングする前に実行される、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３５】
前記キャッシュディレクティブを修正するステップは、前記プリフェッチされたコンテンツアイテムが前記ユーザ装置の前記キャッシュメモリに存在する間に実行される、ことを特徴とする請求項２０または２１に記載の方法。
【請求項３６】
前記キャッシュディレクティブを修正するステップは、前記ユーザアプリケーションに提供するために前記ユーザ装置の前記キャッシュメモリから前記プリフェッチされたコンテンツアイテムを取り出す際に実行される、ことを特徴とする請求項２０または２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ユーザ装置へのコンテンツのプリフェッチに関し、特に、プリフェッチキャッシュ管理のための方法およびシステムに関する。
【０００２】
（関連出願との相互参照）
本出願は、２０１６年１０月２６日に出願された米国暫定特許出願第６２／４１２，８６４号（特許文献１）、および２０１７年１０月３日に出願された米国暫定特許出願第６２／５６７，２６７号（特許文献２）の恩典を主張する。
【背景技術】
【０００３】
ユーザ装置にコンテンツをプリフェッチするための様々な技術が当該技術分野において知られている。例えば、その開示が参照により本明細書に組み込まれる米国特許出願公開第２０１６／００２１２１１号（特許文献３）は、通信端末をコンテンツソースと同期させるため、コンテンツがコンテンツソースからユーザの通信端末に連続的にプリフェッチされる保証プリフェッチモードを定義することを含むコンテンツ配信方法を記載している。ユーザが所与のコンテンツにアクセスすると予想される１つまたは複数の時刻間隔が識別される。識別された時刻間隔中に、保証されたプリフェッチモードを使用して、所与のコンテンツがコンテンツソースから通信端末にプリフェッチされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国暫定特許出願第６２／４１２，８６４号
【特許文献２】米国暫定特許出願第６２／５６７，２６７号
【特許文献３】米国特許出願公開第２０１６／００２１２１１号
【発明の概要】
【０００５】
本明細書に記載された本発明の一実施形態は、ネットワークインタフェースと１つ以上のプロセッサを含む機器を提供する。ネットワークインタフェースは通信ネットワークを介して通信するように構成される。１つ以上のプロセッサは、通信ネットワークを介して、コンテンツソースからユーザ装置のキャッシュメモリにコンテンツアイテムをプリフェッチし、ここでコンテンツアイテムのうち少なくとも１つのコンテンツアイテムは、コンテンツソースによって指定されたキャッシュディレクティブを含み、コンテンツソースによって指定されたキャッシュディレクティブを修正し、そして修正されたキャッシュディレクティブを有するコンテンツアイテムを、ユーザ装置において実行されているユーザアプリケーションに提供し、それによりユーザアプリケーションに対し修正されたキャッシュディレクティブに応答してコンテンツアイテムを処理させる、ように構成される。
【０００６】
いくつかの実施形態では、キャッシュディレクティブは、コンテンツアイテムがプリフェッチされるアプリケーション層プロトコルのメッセージのヘッダ内で指定され、プロセッサは、ヘッダを修正することによってキャッシュディレクティブを修正するように構成される。一実施形態では、アプリケーション層プロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を含む。一例示的実施形態では、キャッシュディレクティブは、「最大存続期間（ｍａｘ−ａｇｅ）」、「期限切れ」タイムスタンプ、「記憶なし（ｎｏ−ｓｔｏｒｅ）」および「キャッシュなし」からなるグループから選択される。いくつかの実施形態では、コンテンツソースによって指定されたキャッシュディレクティブは、コンテンツアイテムが最新のものではないことを示し、そしてプロセッサは、コンテンツアイテムが最新のものであることを示すようにキャッシュディレクティブを修正するように構成される。
【０００７】
いくつかの実施形態では、プロセッサは、保証型プリフェッチモードで動作している間にのみキャッシュディレクティブを変更し、ベストエフォートプリフェッチモードで動作している間には変更しない、ように構成される。一実施形態では、プロセッサは、現在のプリフェッチモードが保証型プリフェッチモードかベストエフォート型プリフェッチモードかに少なくとも部分的に基づいて、キャッシュディレクティブを修正するかどうかを決定するように構成される。もう１つの実施形態では、プロセッサは、プリフェッチされたコンテンツアイテムをユーザに提示し、そして提示されたコンテンツアイテムが最新であるかどうかを、通信ネットワークを介して並行して検証するように構成される。開示された実施形態では、プロセッサは、コンテンツソース上のコンテンツアイテムに対する変更を追跡し、追跡された変更に基づいてキャッシュディレクティブを修正するように構成される。
【０００８】
一実施形態では、プロセッサのうちの少なくとも１つは、ユーザ装置のプロセッサである。一例示的実施形態では、プロセッサは、ユーザ装置のオペレーティングシステム内で動作するソフトウェアコンポーネントを少なくとも部分的に使用してキャッシュディレクティブを修正するように構成される。一実施形態では、プロセッサのうちの少なくとも１つは、ユーザデバイスの外部にあるネットワーク側ノードのプロセッサである。一例示的実施形態では、プロセッサは、ネットワークの側のノードで実行されているソフトウェアコンポーネントを少なくとも部分的に使用してキャッシュディレクティブを修正するように構成されている。
【０００９】
一実施形態では、プロセッサは、キャッシュディレクティブを削除すること、またはコンテンツアイテムを搬送するメッセージのヘッダの少なくとも一部を削除することによってキャッシュディレクティブを修正するように構成される。もう１つの実施形態では、プロセッサは、キャッシュディレクティブを置き換えること、またはコンテンツアイテムを搬送するメッセージのヘッダの少なくとも一部を置き換えることによってキャッシュディレクティブを修正するように構成される。さらにもう１つの実施形態では、プロセッサは、コンテンツアイテムを搬送するメッセージのヘッダに、「記憶なし（ｎｏ−ｓｔｏｒｅ）」または「キャッシュなし」のキャッシュディレクティブを追加することによってキャッシュディレクティブを修正するように構成される。
【００１０】
いくつかの実施形態では、プロセッサは、プリフェッチされたコンテンツアイテムをユーザ装置のキャッシュメモリにキャッシュする前にキャッシュディレクティブを修正するように構成される。他の実施形態では、プロセッサは、プリフェッチされたコンテンツアイテムがユーザ装置のキャッシュメモリに存在する間にキャッシュディレクティブを修正するように構成される。さらに他の実施形態では、プロセッサは、ユーザアプリケーションにサービスを提供するためにユーザ装置のキャッシュメモリからプリフェッチされたコンテンツアイテムを取り出す際にキャッシュディレクティブを修正するように構成される。
【００１１】
本発明の一実施形態によれは、さらに通信ネットワークを介して、コンテンツソースからユーザ装置のキャッシュメモリにコンテンツアイテムをプリフェッチする方法が提供される。コンテンツアイテムのうち少なくとも１つのコンテンツアイテムは、コンテンツソースによって指定されたキャッシュディレクティブを有する。コンテンツソースによって指定されたキャッシュディレクティブは修正され、修正されたキャッシュディレクティブを有するコンテンツアイテムが、ユーザ装置で実行されているユーザアプリケーションに提供され、それによりユーザアプリケーションに対し、修正されたキャッシュディレクティブに応答してコンテンツアイテムを処理させる。
【図面の簡単な説明】
【００１２】
本願発明は添付の図面と共に参照される実施形態の詳細な説明から、より完全に理解されよう：
【図１】本発明の一実施形態による、コンテンツ配信システムを概略示すブロック図である。
【図２】本発明の一実施形態による、コンテンツフェッチングの方法を概略示す流れ図である。
【発明を実施するための形態】
【００１３】
（概論）
本明細書に記載されている本発明の実施形態は、ユーザ装置へのコンテンツ配信のための改善された方法およびシステムを提供する。特に、開示された技術はキャッシュされたコンテンツのユーザアプリケーションによる処理を改善する。
【００１４】
いくつかの実施形態では、ユーザ装置は、通信ネットワークを介して１つまたは複数のコンテンツソースによって提供されたコンテンツアイテムを消費する１つまたは複数のユーザアプリケーション（「アプリ」）を実行する。レイテンシー（待ち時間）を短縮し、ユーザ体験を向上させるために、コンテンツ配信システムは、ネットワークを介して選択されたコンテンツアイテムをユーザ装置のキャッシュメモリにプリフェッチする。
【００１５】
コンテンツソースは、少なくともいくつかのコンテンツアイテムについてコンテンツアイテムのキャッシングを処理する方法をユーザ装置に指示する、キャッシュディレクティブを指定する。キャッシュディレクティブは、例えば、インターネット技術標準化委員会（ＩＥＴＦ）によって、「ハイパーテキスト転送プロトコル（ＨＴＴＰ／１．１）：キャッシング、「コメント要求（ＲＦＣ）７２３４」２０１４年６月に規定され、それはここに参照して取り入れられる。例えば、１つのタイプのキャッシュディレクティブは、キャッシュされたコンテンツアイテムが依然として最新であり、したがって使用可能であると見なされる最大年令を指定する。別の種類のキャッシュディレクティブは、キャッシュされたコンテンツアイテムがそれ以降は古くて使用不可能であると見なされる終了期限を指定する。ＲＦＣ７２３４で指定されているキャッシュディレクティブは、コンテンツソースからユーザ装置にコンテンツアイテムを配信するＨＴＴＰ応答のヘッダの中で送信される。
【００１６】
ユーザアプリケーション（「ａｐｐ」）が特定のコンテンツアイテムを要求すると、要求されたコンテンツアイテムは通常、１つまたは複数のキャッシュディレクティブをおそらく含むＨＴＴＰ応答ヘッダと共にアプリケーションに提供される。その後、アプリは通常、指定されている場合は、キャッシュディレクティブに従ってコンテンツアイテムを処理する。例えば、コンテンツアイテムが最新であることをディレクティブが示す場合、アプリは通常それを消費し、例えばコンテンツをユーザに表示する。コンテンツアイテムが最新ではないことをディレクティブが示す場合、アプリは通常、コンテンツソースに最新バージョンのコンテンツアイテムを要求するか、コンテンツアイテムの有効性を再評価するためにコンテンツソースに少なくとも要求を送信する。
【００１７】
いくつかの場合には、コンテンツ配信システムは、キャッシュされたコンテンツアイテムの有効性に関して、コンテンツソースによって指定されたキャッシュディレクティブによって伝達された情報よりも、より正確な情報を有する。例えば、コンテンツアイテムは、ずっと前に経過した有効期限ディレクティブを用いてユーザ装置にキャッシュされている可能性がある。しかしながら、コンテンツ配信システムは、コンテンツアイテムが実際に最新のものであること、すなわちコンテンツソース上で利用可能な最新のバージョンと依然として同一であること、を示すより正確な情報を有することができる。
【００１８】
いくつかの実施形態では、コンテンツ配信システムは、適切な場合、キャッシュディレクティブをオーバーライドし、それによってユーザアプリは利用可能なより正確な情報に基づいて動作する。一実施形態では、コンテンツ配信システムは、より正確な有効性情報を反映するように選択されたコンテンツアイテムのＨＴＴＰヘッダを修正する、ヘッダ修正モジュールを備える。修正されたヘッダを有するコンテンツアイテムはアプリに供給され、そして次にアプリは修正されたヘッダに従ってコンテンツアイテムを処理する。
【００１９】
このようにして、ヘッダ修正モジュールは、コンテンツソースによって指定された１つまたは複数のキャッシュディレクティブに従ってではなく、コンテンツ配信システムに利用可能な正確な有効性情報に従ってアプリにコンテンツアイテムを処理させる。同時に、アプリとコンテンツ配信システムとの間のすべての通信は、アプリ側のいかなる修正も必要とせずに既存のアプリケーション層プロトコル（例えば、ＨＴＴＰ）に準拠している。
【００２０】
ヘッダ修正モジュールは、例えばキャッシュディレクティブで指定された有効期限または最大経過時間を延長することによって、あるいは指定されたキャッシュディレクティブを完全に削除することによって、任意の適切な方法でヘッダを修正することができる。別の例として、ヘッダ修正モジュールは、コンテンツアイテムを内部的にキャッシュすることを控えるべきであることをアプリに示すために、ヘッダに「記憶なし（ｎｏ−ｓｔｏｒｅ）」キャッシュディレクティブを追加することができる。
【００２１】
ヘッダ修正モジュールは、ユーザ装置内および／またはクラウドサーバなどのコンテンツ配信システムのネットワーク側ノード内に実装することができる。ヘッダ修正モジュールは、コンテンツ配信プロセスの様々な段階で、例えば、コンテンツアイテムがキャッシュメモリ内に置かれる前、コンテンツアイテムがキャッシュメモリから取り出された後、およびアプリに提供される前、またはコンテンツアイテムがキャッシュメモリにある間に、コンテンツアイテムのヘッダを修正することができる。
【００２２】
開示された技術は、そうでなければネットワークを介してコンテンツアイテムを再取得または再検証することが必要となるシナリオにおいて、ユーザ装置がキャッシュからコンテンツアイテムをローカルに提供することを可能にする。したがって、開示された技術は、コンテンツ配信の平均待ち時間を短縮し、ユーザエクスペリエンスを向上させ、またユーザ装置の運用コストおよび電力消費を削減するのにも役立つ。
【００２３】
（システムの記述）
図１は、本発明の一実施形態による、コンテンツ配信システム２０を概略的に示すブロック図である。システム２０は、ネットワーク３２を介して１つまたは複数のコンテンツソース２８によって提供されるコンテンツアイテムにアクセスし消費するユーザ装置２４からなる。ユーザ装置２４は、例えば携帯電話、自動車携帯電話あるいは、スマートフォン、無線対応のラップトップまたはタブレットコンピュータ、デスクトップパーソナルコンピュータ、スマートテレビ（ＴＶ）、ウェアラブル装置、またはネットワークを介して通信しコンテンツをユーザに提示することができる任意の他の適切なタイプのユーザ装置などの任意の適切な無線または有線装置を含み得る。
【００２４】
ユーザ装置２４は、任意の適切なソフトウェアを使用して、例えば、様々なユーザアプリケーション（「アプリ」）３６を使用して、または汎用ブラウザを使用してコンテンツを消費することができる。本明細書の文脈においては、ブラウザも一種のユーザアプリと見なされる。図は明瞭さのため単一のユーザ装置２４を示す。実際のシステムは通常、様々な種類の多数のユーザ装置を含む。
【００２５】
ネットワーク３２は、例えば、インターネットなどの広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、セルラーネットワークまたは無線ＬＡＮ（ＷＬＡＮ）などの無線ネットワーク、あるいは任意の他の適切なネットワークまたはそれらの組み合わせを含み得る。
【００２６】
コンテンツソース２８は、例えば、ウェブコンテンツサーバ、または任意の他の適切なコンテンツソースを含み得る。開示された技術は、ほんの数例を挙げると、例えば、ウェブページ、オーディオまたはビデオクリップ、ｈｔｍｌファイル、ジャバスクリプトおよび／またはＣＳＳファイルなどの任意の適切な種類のコンテンツアイテムと共に使用することができる。
【００２７】
いくつかの実施形態では、システム２０は、ユーザ装置２４へのコンテンツアイテムのプリフェッチを実行する。この例では、ユーザ装置２４は、ユーザ装置の様々な処理タスクを実行するプロセッサ４４を備える。他のタスクの中でも特に、プロセッサ４４は、ユーザアプリ３６を実行し、そしてさらにアプリ３６のためにコンテンツアイテムのプリフェッチを処理する、プリフェッチエージェント４８と呼ばれるソフトウェアコンポーネントを実行する。さらに、ユーザデバイス２４はプリフェッチしたコンテンツアイテムをキャッシュするためのコンテンツキャッシュ５２を備える。コンテンツキャッシュ５２は通常、プリフェッチエージェント４８によって管理される。
【００２８】
通常、プリフェッチエージェント４８は、プリフェッチされたコンテンツアイテムを受信し、それらをコンテンツキャッシュ５２に記憶する。プリフェッチエージェント４８は、コンテンツアイテムにアクセスするというユーザ要求を傍受し、要求されたアイテムが既にキャッシュ内にあるかどうかを判断することが出来る。キャッシュ内にある場合には、プリフェッチエージェントは要求されたコンテンツアイテムをコンテンツキャッシュから取り出すことができる。キャッシュ内になければ、プリフェッチエージェントは通常、ネットワーク３２を介してコンテンツソース２８から要求されたコンテンツアイテムを取り出す。一実施形態では、プリフェッチエージェント４８は、使用履歴パターン、およびユーザ装置に関する他の関連データの追跡も支援することができ、それは、コンテンツのプリフェッチポリシーを指定するための入力として使用することができる。
【００２９】
ユーザ装置２４は、通常、ネットワーク３２に接続するための適切なネットワークインタフェース（図示せず）も含む。このネットワークインタフェースは、有線（例えば、イーサネット（登録商標）ネットワークインタフェースコントローラ：ＮＩＣ）または無線（例えば、セルラーモデムまたはＷｉ−Ｆｉモデム）である。通常、ユーザ装置２４は、適用可能なプリフェッチポリシーなどの関連情報を記憶するために使用される何らかの内部メモリ（図示せず）をさらに備える。
【００３０】
この例では、プロセッサ４４は、ヘッダ修正モジュール４０と呼ばれるソフトウェアモジュールをさらに実行する。ヘッダ修正モジュール４０は、コンテンツソース２８によって指定されたキャッシュディレクティブを修正するために、選択されたアプリケーションプロトコル（例えばＨＴＴＰ）応答のヘッダを修正する。ヘッダ修正モジュール４０の機能については以下に詳細に説明する。以下に詳述されるように、ヘッダ修正モジュール４０がユーザ装置２４内に存在する構成は一つの例である。代替として、ヘッダ修正モジュール４０の機能は、少なくとも部分的にシステム２０の任意の他の１つまたは複数の要素によって実行され得る。
【００３１】
図１の実施形態では、システム２０は、ネットワーク側で様々なコンテンツプリフェッチ関連タスクを実行するプリフェッチサブシステム６０をさらに含む。サブシステム６０は、ネットワーク３２を介して通信するためのネットワークインタフェース６４と、プリフェッチサブシステムの様々な処理タスクを実行するのを助けるプロセッサ６８とを含む。この例では、プロセッサ６８は、コンテンツプリフェッチを実行するコンテンツプリフェッチ制御ユニット（ＣＰＣ）７２を動作させる。
【００３２】
例としての一実施形態では、ＣＰＣ７２は、コンテンツをユーザ装置２４にプリフェッチする方法を指定するプリフェッチポリシーを定義する。例えば、ＣＰＣ７２は、ユーザがコンテンツアイテムを要求する可能性に例えば基づいて、どのコンテンツアイテムをコンテンツソース２８からコンテンツキャッシュ５２にプリフェッチするかを決定することができる。ＣＰＣは、例えば、ユーザがそれらを要求すると予想される時間の予測、および／または通信リソースの利用可能性に基づいて、コンテンツアイテムをプリフェッチするための適切な時間を決定することができる。ＣＰＣは、例えばＷｉ−  Ｆｉまたはセルラー接続を介して、コンテンツアイテムをキャッシュ５２にどのように配信すべきかを決定することができる。さらに別の例として、ＣＰＣは、コンテンツアイテムがユーザ装置に配信されるフォーマット、例えば、圧縮を実行するかどうか、または既にプリフェッチされたコンテンツの場合に変更のみを配信するか（すなわち差分プリフェッチ更新）を決定し得る。
【００３３】
様々な実施形態において、プリフェッチポリシーを適用することの一部として、コンテンツプリフェッチ制御ユニット（ＣＰＣ）７２は、各コンテンツアイテムについて、ユーザデバイス２４のユーザがそのコンテンツアイテムへのアクセスを要求する可能性を推定することができる。そのような尤度指標は、ユーザ装置２４に送信することができ、異なるコンテンツアイテムについてのプリフェッチ優先順位をランク付けする際にプリフェッチエージェント４８によって使用することができる。ＣＰＣ７２における尤度推定は、様々な要因を考慮に入れることができる。いくつかの要因は、ユーザに関連している可能性がある（例えば、性別、地理的位置、興味、および／または最近および過去のインターネット履歴）。他の要因は環境に関連し得る（例えば、時刻、道路交通状況、天気、現在  出来事、および／またはスポーツの機会）。さらに他の要因は、コンテンツに関連し得る（例えば、コンテンツのトピックまたはカテゴリ、コンテンツのキーワード、コンテンツソースのＩＤ、および／またはコンテンツの現在の人気または評価）。
【００３４】
いくつかの実施形態では、コンテンツプリフェッチ制御ユニット（ＣＰＣ）７２は、様々なコンテンツアイテムのプリフェッチ優先順位および／またはプリフェッチのタイミングを決定するのを助けるために、ユーザがコンテンツアイテムにアクセスする可能性が高い時間を推定する。これらの時間推定は、デバイスに送信されるプリフェッチポリシーの一部として個別に指定される場合もあれば、尤度指標自体に組み込まれる場合もある。例えば、１時間以内にアクセスされる可能性が高いコンテンツアイテムは、少なくとも２時間は必要とされないであろうコンテンツアイテムと比較して、高い尤度指標を与えられてもよい。
【００３５】
ユーザがコンテンツにアクセスする可能性に加えて、またはその代わりに、プリフェッチポリシーを指定する際にＣＰＣ７２が考慮し得る他の要因は、電力消費の考慮事項（例えば、Ｗｉ−Ｆｉ接続または強力なセルラー接続が利用可能である間にプリフェッチすることへの嗜好性）、送信コストの考慮事項（例えば、より低コストのデータ転送時間への嗜好性）、ネットワークの輻輳およびサーバ負荷の考慮事項（例えば、オフピークトラフィック時間中にプリフェッチすることへの嗜好性）、および／または他のユーザ関連またはネットワーク関連の考慮事項、を含みうる。
【００３６】
さらに追加的または代替的に、プリフェッチポリシーを指定する際に、ＣＰＣ７２は特定の時刻をそれぞれのプリフェッチ優先順位レベルと関連付けることができる。この関連付けは、異なるアプリまたはコンテンツソースに対して別々に実行されてもよく、または複数のアプリまたはコンテンツソースに対して一緒に実行されてもよい。プリフェッチ優先順位レベルを決定する際の１つの例示的な要因は、様々な時刻中にユーザが異なるアプリまたはコンテンツソースにアクセスする推定可能性である。プリフェッチ操作に高い優先順位を割り当てると、通常、プリフェッチ操作が発生する可能性が高くなる（おそらく、特定の制約や制限によって調整される）。
【００３７】
プリフェッチサブシステム６０およびプリフェッチエージェント４８によって使用可能なコンテンツプリフェッチ、およびコンテンツプリフェッチ方式のいくつかの態様は、上で引用した米国特許出願公開第２０１６／００２１２１１号（特許文献３）で記載されている。例えば、ＣＰＣ７２は、様々なプリフェッチモード、例えば保証型プリフェッチモードとベストエフォート型プリフェッチモードとの間で選択することができる。保証プリフェッチモードでは、ＣＰＣ７２は、コンテンツソース２８上のコンテンツの変化を（例えば、所定の追跡間隔で）継続的に追跡し、ユーザ装置２４内のコンテンツキャッシュ５２がコンテンツソースと同期するようにプリフェッチによって定期的に更新されることを保証する（定義済みの保証モードプリフェッチ間隔で）。ベストエフォートモードでは、ＣＰＣは通常、利用可能なリソースを使用して可能な限りプリフェッチを実行する。
【００３８】
例えば、ベストエフォートモードでは、プリフェッチは、ユーザ装置のモデムがとにかくアクティブであるシナリオ、特に堅牢なネットワーク接続が存在するシナリオ、またはメータリングされていない接続（例えば、Ｗｉ−Ｆｉだがセルラーでない）に関するシナリオ、に制限され得る。保証されたプリフェッチモードは、ユーザがコンテンツソースにアクセスする可能性が高いと予測されている１つまたは複数の時間間隔中に利用され得る。保証モードとベストエフォートモードとの間の選択に影響を及ぼし得る他の考慮事項は、例えば、電力消費、送信コスト、ネットワーク輻輳、および／またはサーバ負荷など、さまざまなプリフェッチポリシーの考慮事項に基づき得る。モードの選択はまた、異なるアプリケーションおよび／またはコンテンツソースに対して別々になされ得る。
【００３９】
いくつかの実施形態では、ＣＰＣ７２はコンテンツソース２８を定期的に監視し、「プリフェッチカタログ」−プリフェッチに利用可能なコンテンツアイテムのカタログを生成する。各コンテンツアイテムは、識別子（ＩＤ）とバージョン番号の表示によってカタログ内で表される。バージョン番号により、ＣＰＣ７２および／またはプリフェッチエージェント４８は、例えば、特定のコンテンツアイテムが、ユーザ装置２４のキャッシュ５２にキャッシュされたバージョンに対して変化したかどうかを判断することができる。カタログはまた、上述の尤度指標、コンテンツアイテムを取り出すことができるリンクまたはアドレス、および／またはその他の関連情報を含むこともできる。カタログは、他のプリフェッチルール、戦略、しきい値、またはＣＰＣ７２で定義されているその他のポリシー事項とともに、プリフェッチポリシーの一部と見なされる。
【００４０】
図１に示されるシステム２０およびその様々な要素の構成は例示的な構成であり、純粋に概念的な明確さのために選択されている。代替実施形態では、他の任意の適切な構成を使用することができる。例えば、プリフェッチサブシステム６０、プリフェッチエージェント４８、およびヘッダ修正モジュール４０の機能は、任意の所望の数のプロセッサを使用して、または単一のプロセッサでさえも実施することができる。プリフェッチサブシステム６０、プリフェッチエージェント４８、およびヘッダ修正モジュール４０の様々な機能は、任意の適切な方法でプロセッサ間で分割することができる。別の実施形態では、サブシステム６０の機能の一部または全部は、ユーザ装置２４のプリフェッチエージェント４８によって実行されてもよい。
【００４１】
別の例として、プリフェッチエージェント４８および／またはヘッダ修正モジュール４０は、プロセッサ４４上で動作するソフトウェアモジュールで、プロセッサ４４上で動作するアプリケーションで、プロセッサ４４上で動作するアプリケーションに埋め込まれたソフトウェア開発キット（ＳＤＫ）で、プロセッサ４４上で動作するオペレーティングシステム（ＯＳ）により、または他の任意の適切な方法で、実装することができる。一実施形態では、プロセッサ４４は、プリフェッチエージェント４８によって制御され、着信トラフィックおよび発信トラフィックにさらされる、プロキシサーバを動作させてもよい。
【００４２】
さらに代替として、プリフェッチエージェント４８および／またはヘッダ修正モジュール４０の機能は、ユーザ装置２４上に１つのエージェントなしに、完全にネットワーク側に実装することができる。さらに代替として、プリフェッチエージェント４８および／またはヘッダ修正モジュール４０の機能のいくつかは、ユーザ装置側に実装することができ、そしてプリフェッチエージェント４８および／またはヘッダ修正モジュール４０の他の機能は、ネットワーク側に実装することができる。例えば、クラウドベースのプリフェッチサーバは、コンテンツソース２８上のコンテンツアイテムを追跡し、（おそらくユーザ装置オペレーティングシステムに常駐している）ユーザ装置内のプリフェッチエージェントにコンテンツの変更を報告することができる。
【００４３】
一般に、本明細書に記載の異なるシステム要素（例えば、プリフェッチエージェント、ヘッダ修正モジュール、コンテンツソース、およびサブシステム６０の要素）の機能は、他の任意の適切な方法で分割することができる。したがって、本特許出願および特許請求の範囲の文脈において、開示された技術は１つまたは複数のプロセッサによって実行される。プロセッサは、ユーザ装置２４内、および／またはサブシステム６０内および／またはコンテンツソース２８内などのネットワーク側に常駐することができる。
【００４４】
本明細書に記載の実施形態は主に人間のユーザを指すが、「ユーザ」という用語は機械のユーザも指す。機械ユーザは、例えば、様々なモノのインターネット（ＩｏＴ）アプリケーションにおけるように、無線通信を使用する様々なホストシステムを含むことができる。
【００４５】
システム２０の異なる要素は、適切なソフトウェアを使用して、適切なハードウェアを使用して、例えば１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を使用して、またはハードウェアとソフトウェア要素の組み合わせを使用して実装できる。コンテンツキャッシュ５２は、任意の適切な種類の１つまたは複数のメモリまたは記憶装置を使用して実装することができる。いくつかの実施形態では、プリフェッチエージェント４８、ヘッダ修正モジュール４０、および／またはプリフェッチサブシステム６０は、本明細書で記載されている機能を実行するためにソフトウェアでプログラムされる１つまたは複数の汎用プロセッサを使用して実装され得る。ソフトウェアは、例えばネットワークを介して電子形態でプロセッサにダウンロードすることができ、あるいは代替的にまたは付加的に、磁気、光学、または電子メモリなどの非一過性有形媒体に提供および／または記憶することができる。
【００４６】
（ヘッダ修正を使用したユーザアプリケーションによる、キャッシュされたコンテンツの処理の制御）
いくつかの実施形態では、ユーザ装置２４のアプリ３６は、ＨＴＴＰ要求をコンテンツソース２８に送信することによってコンテンツアイテムを要求する。コンテンツソースは、要求されたコンテンツアイテムをそれぞれのＨＴＴＰ応答で送信する。これらの実施形態では、プリフェッチエージェント４８およびプリフェッチサブシステム６０もまた、ＨＴＴＰ要求および応答を使用してコンテンツアイテムをプリフェッチする。  ＨＴＴＰは、コンテンツの配信に使用できるアプリケーション層プロトコルの一例である。代替実施形態では、開示された技術は、配信されたコンテンツのためのキャッシュディレクティブをサポートする他の適切なアプリケーション層プロトコルと共に使用されうる。ただし、以下の記述では、明確化のためＨＴＴＰを中心に記述する。
【００４７】
要求されたコンテンツアイテムを配信するとき、コンテンツソース２８は、ユーザデバイス２４にコンテンツアイテムのキャッシングを処理する方法を指示する１つまたは複数のキャッシュディレクティブを指定することができる。キャッシュディレクティブは、コンテンツアイテムを配信するＨＴＴＰ応答のヘッダの適切なフィールドに指定さる。上記で引用したＲＦＣ７２３４に準拠したキャッシュディレクティブの例には、次のものがある：
・「最長期間（Ｍａｘ−ａｇｅ）」  −  コンテンツアイテムを要求した時点から、コンテンツアイテムが新鮮（最新であり、従って使用可能）であると見なされるまでの最長期間を指定するディレクティブ。
・「有効期限（Ｅｘｐｉｒｅｓ）」  −  コンテンツアイテムがフレッシュと見なされなくなる期限切れ時刻（通常は日付と時刻）を指定するディレクティブ。
・「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」  −  コンテンツアイテムがキャッシュされている場合、コンテンツアイテムを再利用する前に元のコンテンツソースで再検証するように指定するディレクティブ。
・「記憶せず（Ｎｏ−ｓｔｏｒｅ）」  −  返されたコンテンツアイテムを含め、ＨＴＴＰ応答に関して何もキャッシュしないように指定するディレクティブ。
【００４８】
ユーザアプリケーション３６が特定のコンテンツアイテムを要求すると、要求されたコンテンツアイテムは通常、キャッシュディレクティブをおそらく含むＨＴＴＰ応答ヘッダと共に（コンテンツキャッシュ５２からローカルに、またはネットワーク３２を介して）アプリケーションに提供される。その後、アプリは通常、キャッシュディレクティブに従ってコンテンツアイテムを処理する。したがって、コンテンツアイテムをプリフェッチするとき、プリフェッチエージェント４８は通常、そのアイテムのＨＴＴＰ応答ヘッダをコンテンツと共にコンテンツキャッシュ５２に記憶し、それによってヘッダをアプリに提供することができる。
【００４９】
ユーザ装置２４のコンテンツキャッシュ５２にキャッシュされているいくつかのコンテンツアイテムについて、システム２０は、コンテンツソース２８によって指定されたキャッシュディレクティブによって伝えられる情報よりも、有効性に関してより正確な情報を有することができる。この改良された情報は、プリフェッチサブシステム６０によって実行されたコンテンツソース２８上のコンテンツに対する変更を追跡するプロセス（例えば、クローリング）から発生してもよい。その情報は、ネットワーク３２を介してなどの任意の適切な手段を使用して、またはユーザ装置間の直接装置間リンクを介して、別のユーザ装置からサブシステム６０および／またはプリフェッチエージェント４８に提供され得る。
【００５０】
例えば、キャッシュ５２内の特定のコンテンツアイテムのＨＴＴＰ応答ヘッダは、すでに経過した有効期限を有する「期限切れ（Ｅｘｐｉｒｅｓ）」指令、または既に超過した年齢を有する「最長期間（Ｍａｘ−ａｇｅ）」指令を含むことができる。一方、プリフェッチサブシステム６０またはプリフェッチエージェント４８は、コンテンツアイテムが実際に新鮮である（すなわち、コンテンツソース２８で利用可能な最新のバージョンと同一である）ことを示す情報を保有してもよい。
【００５１】
そのような場合、プリフェッチサブシステム６０またはプリフェッチエージェント４８は、対象コンテンツアイテムのＨＴＴＰ応答ヘッダを修正するためにヘッダ修正モジュール４０を起動することができる。起動されると、ヘッダ修正モジュール４０は、コンテンツアイテムが最新であることをキャッシュディレクティブ（またはその欠如）が示すように、ＨＴＴＰ応答ヘッダを修正する。
【００５２】
修正されたヘッダを有するコンテンツアイテムは、キャッシュ５２からアプリ３６に供給される。したがって、アプリは、コンテンツソースによって指定されたオリジナルのキャッシュディレクティブの代わりに、修正されたキャッシュディレクティブに従ってコンテンツアイテムを処理する。たとえば、コンテンツアイテムが最新のものであることを変更されたヘッダが示す場合、アプリは通常それを消費し、コンテンツソースに対する再検証やネットワーク経由の再取得を要求しない。
【００５３】
様々な実施形態において、ヘッダ修正モジュール４０は、コンテンツアイテムがまだ最新であるという事実を反映するように、キャッシュされたコンテンツアイテムのヘッダを修正し、アプリ３６にそれを引き続き使用させることができる。
【００５４】
例えば、ヘッダ修正モジュール４０は、元のヘッダの「最長期間（Ｍａｘ−ａｇｅ）」値がすでに過ぎていても、ＨＴＴＰ応答ヘッダの「最長期間（Ｍａｘ−ａｇｅ）」値をまだ過ぎていない年齢まで増加させることができる。別の例として、ヘッダ修正モジュール４０は、元のヘッダ内の「有効期限（Ｅｘｐｉｒｅｓ）」タイムスタンプがすでに期限切れになっていても、ＨＴＴＰ応答ヘッダ内の「有効期限（Ｅｘｐｉｒｅｓ）」値をまだ期限切れになっていない日時に変更することができる。
【００５５】
さらに別の例として、ヘッダ修正モジュール４０は、ＨＴＴＰ応答ヘッダから「ノーキャッシュ（Ｎｏ−ｃａｃｈｅ）」ディレクティブを削除することができる。より一般的には、アプリケーション３６がヘッダ内で指定されたキャッシュディレクティブに従うのを防ぐために、ヘッダ修正モジュール４０はＨＴＴＰ応答ヘッダの一部または全部さえも削除することができる。
【００５６】
別の例では、ヘッダ修正モジュール４０は、ＨＴＴＰ応答ヘッダに「記憶せず（Ｎｏ−ｓｔｏｒｅ）」ディレクティブを追加することができる。そのような追加は、アプリ３６がアプリのローカルキャッシュにコンテンツアイテムをキャッシングすることを控えることを示し、それによって二重キャッシュ（コンテンツキャッシュ５２とアプリの内部キャッシュの両方にコンテンツアイテムをキャッシングすること）を回避する。この特徴はまた、アプリ３６に対しコンテンツキャッシュ５２にキャッシングされたバージョンのコンテンツアイテムを使い続けるようにさせる。
【００５７】
さらに追加的または代替的に、ヘッダ修正モジュール４０は、他の適切な方法で、キャッシュされたコンテンツアイテムのＨＴＴＰ応答ヘッダを修正することができる。本特許出願および特許請求の範囲の文脈において、用語「キャッシュディレクティブの変更」または「ヘッダの変更」は、例えば、キャッシュディレクティブの属性値の変更、キャッシュディレクティブの削除、キャッシュディレクティブを他のものと置換、および／またはヘッダにキャッシュディレクティブを追加、などのあらゆる種類の変更を含むことができる。
【００５８】
様々な実施形態において、ヘッダ修正モジュール４０は、コンテンツ配信プロセスの様々な段階でコンテンツアイテムのＨＴＴＰ応答ヘッダを修正することができる。いくつかの実施形態では、ヘッダ修正モジュール４０は、コンテンツアイテムがキャッシュ５２に配置される前にヘッダを修正する。次いで、コンテンツアイテムは修正されたヘッダと共にキャッシュ５２に保存される。他の実施形態では、モジュール４０は、コンテンツアイテムがキャッシュ５２から取り出された後で、かつそれがアプリ３６に提供される前にヘッダを修正する。
【００５９】
さらに他の実施形態では、ヘッダ修正モジュール４０は、コンテンツアイテムがキャッシュ５２に常駐する間、すなわち、コンテンツアイテムをキャッシュ５２に保存する時と、アプリ３６に提供するためにコンテンツアイテムをキャッシュ５２から取り出す時との間の任意の時刻にヘッダを修正する。後者の選択肢は、例えば、有効性例えば新鮮さのステータスの更新、に関する新しい情報、が利用可能になったときに、役に立つ可能性がある。
【００６０】
上述のように、いくつかの実施形態では、システム２０は、特定の時点で、保証されたプリフェッチモードで（特定のユーザ装置２４に対して）動作する。他の時点では、システム２０は、ベストエフォートプリフェッチモードでこのユーザ装置に対して動作する。保証型プリフェッチモードでは、プリフェッチサブシステム６０はコンテンツソース２８上のコンテンツの変化を継続的に追跡し、コンテンツキャッシュ５２にキャッシングされたコンテンツアイテムがコンテンツソース上の対応する最新バージョンと継続的に同期され続けるようにする。
【００６１】
したがって、保証型プリフェッチモードで動作しているとき、サブシステム６０は正確な有効性情報を所有する可能性が特に高い。したがって、開示されたヘッダ修正技術と保証されたプリフェッチモードとの組み合わせは特に効果的である。それにもかかわらず、開示されたヘッダ修正技術は、ベストエフォートプリフェッチモードで動作するときにも適用可能である。
【００６２】
いくつかの実施形態では、ヘッダ修正モジュール４０は、対象ユーザ装置へのプリフェッチが保証されたプリフェッチモードに従っているときにヘッダ修正を実行する。いくつかの実施形態では、ヘッダ修正モジュール４０は、保証型プリフェッチモードでのみヘッダ修正を実行し、ベストエフォート型プリフェッチモードでは実行しない。いくつかの実施形態では、ヘッダ修正モジュール４０は、現在のプリフェッチモードが、保証型プリフェッチモードであるかベストエフォート型プリフェッチモードであるかに少なくとも部分的に基づいて、ヘッダ修正を実行するかどうかを決定する。
【００６３】
いくつかのシナリオでは、ヘッダ修正モジュール４０はいくつかのコンテンツアイテムのＨＴＴＰ応答ヘッダを修正し、それによってアプリ３６にそのコンテンツアイテムを使用させるが、そのコンテンツアイテムは実際には最新のものではない。そのようなシナリオは、例えば、ベストエフォートプリフェッチモードにおいて（プリフェッチサブシステムの有効性情報が信頼できない場合がある）、または保証型プリフェッチモードにおいて（例えば、ユーザ装置に送信されたステータスレポートを失った）発生する。そのような場合、プロセッサ４４は依然としてコンテンツアイテムをユーザに提示し、そして並行してコンテンツアイテムの鮮度を再評価することができる。この特徴は、例えば、本特許出願の譲受人に譲渡された「通信端末におけるコンテンツの鮮度認識プレゼンテーション」という名称の米国特許出願公開第２０１７／０１１１４６５号に記載されており、その開示は参照により本明細書に組み込まれる。
【００６４】
上述のように、開示された技術は、ユーザ装置内および／またはネットワーク側で、１つまたは複数のプロセッサを使用して実施することができる。非限定的な例示的実施形態では、プリフェッチサブシステム６０および／またはヘッダ修正モジュール４０の機能のうちのいくつかまたは全ては、以下のうちの１つまたは複数において実装され得る：
・プロセッサ４４上で実行されているユーザ装置のオペレーティングシステム（ＯＳ）
・プリフェッチをサポートするアプリ３６の１つ
・プロセッサ４４上で実行され、１つ以上の他のアプリ３６にプリフェッチサービスとキャッシュサービスを提供する、１つのアプリ。
【００６５】
さらに別の例では、ヘッダ修正モジュール４０は、プリフェッチサブシステム６０の不可欠な部分としてではなく、別個のエンティティとして実装することができる。同様に、ヘッダ修正モジュール４０は、同じソフトウェアモジュール内のプリフェッチエージェント４８と統合することができる。
【００６６】
図２は、本発明の一実施形態による、コンテンツプリフェッチの方法を概略的に示すフローチャートである。方法は、プリフェッチステップ８０において、プリフェッチサブシステム６０および／またはプリフェッチエージェント４８がコンテンツソース２８からユーザ装置２４のコンテンツキャッシュ５２にコンテンツアイテムをプリフェッチするステップで開始する。プリフェッチされたコンテンツアイテムの少なくともいくつかは、発信元コンテンツによって指定されるキャッシュディレクティブを含む。追跡ステップ８４において、プリフェッチサブシステム６０は、例えばコンテンツをクロールすることによって、コンテンツソース２８上のコンテンツアイテムに対する変更を追跡する。
【００６７】
チェックステップ８８において、プリフェッチサブシステム６０および／またはプリフェッチエージェント４８は、コンテンツキャッシュ５２にキャッシュされた特定のコンテンツアイテムについて、オリジナルのキャッシュディレクティブがそのコンテンツアイテムが最新ではないことを示すが、しかしステップ８４の追跡プロセスはコンテンツアイテムが実際に最新のものであることを示すのか、否かをチェックする。
【００６８】
否であれば、通常の処理ステップ９２で、コンテンツアイテムは通常通りに処理される。通常の処理では、アプリ３６がコンテンツアイテムを要求すると、プリフェッチエージェント４８はコンテンツソースによって指定されたキャッシュディレクティブと共にコンテンツキャッシュ５２からコンテンツアイテムを供給する。アプリは、指定されたキャッシュディレクティブに従ってコンテンツアイテムを処理する。
【００６９】
一方、元のキャッシュディレクティブがコンテンツアイテムが最新ではないことを示しているにもかかわらず、追跡プロセスがコンテンツアイテムが最新であることを示す場合、ヘッダ修正モジュール４０はヘッダ修正ステップ９６において、そのコンテンツアイテムのＨＴＴＰ応答ヘッダを修正する。本明細書で説明されているヘッダ修正方式のいずれをも使用することができる。
【００７０】
修正されたサービングステップ１００において、ヘッダ修正モジュール４０またはプリフェッチエージェント４８は、修正されたヘッダとともに、要求しているアプリ３６にコンテンツアイテムを提供する。消費ステップ１０４において、アプリケーションは、修正されたヘッダに従ってコンテンツアイテムのキャッシュされたバージョンを消費する。
【００７１】
本明細書に記載された実施形態は主にプリフェッチされたコンテンツのキャッシングを取り扱っているが、本明細書に記載された方法およびシステムはキャッシングを採用する他のシステムおよびアプリケーションにおいても使用され得る。開示された技術は、アプリへの改善されたキャッシング命令（元のキャッシュディレクティブと比較して改善された）を提供することができる任意の適切なキャッシングシステムを可能にするために使用され得る。したがって、例えば、開示されたキャッシュディレクティブを修正する方法は、上記で引用された米国仮特許出願第６２／４１２，８６４号（特許文献１）および同第６２／５６７，２６７号（特許文献２）に記載されている保証キャッシュステータス更新モードおよび／またはベストエフォートキャッシュステータス更新モードとともに実施可能である。
【００７２】
上記の実施形態は例として引用されており、本発明は上記に特に示され記載されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、上記の様々な特徴の組み合わせおよびサブ組み合わせ、ならびに前記記載を読んだ当業者に想起され、そして先行技術の中に開示されていないそれらの変形および修正の両方を含む。参照により本特許出願に組み込まれた文書は、本出願の不可欠な部分とみなされるべきである。本明細書において明示的または黙示的になされる定義と組み込まれた文書の定義が矛盾する場合は、本明細書における定義が優先する。
【図１】
2019537085.tif 000003
【図２】
2019537085.tif 000004
【国際調査報告】
2019537085.tif 000005
2019537085.tif 000006
2019537085.tif 000007
2019537085.tif 000008
2019537085.tif 000009
2019537085.tif 000010
2019537085.tif 000011
2019537085.tif 000012
2019537085.tif 000013
2019537085.tif 000014