JP2022549076A - シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム - Google Patents

シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム Download PDF

Info

Publication number
JP2022549076A
JP2022549076A JP2022515836A JP2022515836A JP2022549076A JP 2022549076 A JP2022549076 A JP 2022549076A JP 2022515836 A JP2022515836 A JP 2022515836A JP 2022515836 A JP2022515836 A JP 2022515836A JP 2022549076 A JP2022549076 A JP 2022549076A
Authority
JP
Japan
Prior art keywords
content
api request
seed value
group
caching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022515836A
Other languages
English (en)
Other versions
JP7477251B2 (ja
Inventor
ビューラー、ディーター
ロー、カーステン
ハンスマン、ウーヴェ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022549076A publication Critical patent/JP2022549076A/ja
Application granted granted Critical
Publication of JP7477251B2 publication Critical patent/JP7477251B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善する方法をする。この方法は、コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持し、グループのコンテンツ・アイテムの1つが更新されたと判定すると、コンテンツ・アイテムのグループのシード値を更新し、グループのコンテンツ・アイテムの1つを関連するシード値と共にキャッシング・システムにキャッシングし、キャッシング・システムによってAPI要求結果としてグループのコンテンツ・アイテムを要求するAPI要求を受信する。ここでAPI要求のパラメータは選択されたシード値である。

Description

本発明は一般に、コンテンツ・デリバリ・ネットワークにおけるコンテンツのキャッシングに関し、より詳細には、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティ(cachability)を改善するためのコンピュータ実装方法に関する。本発明はさらに、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための関連するキャッシング・システムおよびコンピュータ・プログラム製品に関する。
あらゆる規模の企業に関してデータ、具体的にはいわゆる非構造化データの量が増えるほど、コンテンツ管理システムを使用してより多くの企業データを管理する必要がある。コンテンツ管理システムは、増え続けるドキュメントを記憶するためだけでなく、Webページなどのコンテンツ作成ツールとしても使用され得る。また、検索エンジンは、非構造化ドキュメントのみでなく、データ分析システムおよび他のソースからのレポートに関しても、企業のコンテンツ管理においてますます大きな役割を果たしている。
一方、コンテンツ・アイテムは、企業内で配布され、部分的には顧客およびサプライヤとも共有され、信頼性の高い一貫した方法でアクセス可能にされる必要がある。すなわち、ドキュメントおよび他のコンテンツ・アイテムは、常に最新バージョンで利用できる必要がある。これにより、ソースおよびターゲット(多くの場合、ブラウザを使用するクライアント・システム)の間にキャッシング・システムも含み得る配信ネットワークは、可能な最小の負担、すなわち、ネットワーク・トラフィックを搬送する必要がある。
現在、クライアント側でシングル・ページ・アプリケーション(SPA)が使用されることがよくあり、その主な特徴は動的コンテンツを用いて動作することである。そのようなコンテンツは、新しい情報が利用可能になり次第、Webページの一部として更新され得る。これにより、Webページの他のコンテンツ要素は静的なままであり、定期的に更新されない場合がある。
中間キャッシングは、高性能のクライアント・アプリケーションを実現すると同時に、バックエンド・サーバへの要求の量(ひいては負荷)を許容可能なレベルに保つために非常に重要である。静的な不変のリソース(画像など)は、対応するHTTPキャッシュ制御ヘッダを追加することによって、キャッシュするのが容易である。
一方、REst API(表現可能状態転送アプリケーション・プログラミング・インターフェース:representational state transfer application programming interface)応答のキャッシングははるかに困難であり、その理由は、結果が典型的には動的であり、有効期間に基づいてこれらの結果をキャッシングすると、その有効期間の間、データが古くなる可能性があるためである。この制限を克服するために、今日の多くのクラウド・サービスは、HTTPの「ETag」および「if-not-match」アドレスを利用することにより、検証ベースのキャッシングを使用している。このアプローチにより、平均的なサーバ(またはキャッシュ・システム)は、対応するHTTP要求をサービスの提供元に行うことによって、オブジェクトのキャッシュが古くなったか否かをチェックすることが可能になる。このアプローチにより、同じデータをソースからエッジ・サーバに繰り返し転送することが回避される。それは問題ないが、このアプローチでは依然としてソース・サーバへの検証要求が発生するので、典型的にはこのサーバおよびネットワークに大きな負担がかかる。さらに、検証自体は決して些細ではないことが多く、たとえば、検索API呼び出しの結果は、目下の検索クエリによるフィルタリングに使用される多種多様なメタデータに依存し得る。
検証ベースのキャッシングは、典型的には、HTTPキャッシングでは困難である。現在、ブラウザのキャッシュを無効化する技術的手段はない。一部のCDN(コンテンツ・デリバリ・ネットワーク)キャッシュは無効化をサポートしているが、CDNキャッシュの無効化は軽量な動作ではなく、典型的には、全てのエッジ・サーバ(すなわち、クライアント・システム)に行き渡るまでに長い時間がかかる。さらに、これは、典型的には、個々のパラメータ化されたAPI呼び出しのようなきめ細かいレベルで使用することを意図したものではない。
コンテンツ・デリバリ・システムにおいてコンテンツを管理するための方法に関連するいくつかの開示があり、米国特許出願公開第2017/0046438号の文書では、クエリ受信器、ライブ・スクレイプ・システム、およびキャッシュ・マネージャを含む検索システムが開示されている。クエリ受信器は、第1のアプリケーションの第1のアプリケーション状態に関連する第1のクエリを受信するように構成される。第1のクエリは、ユーザ・デバイスによって要求される。キャッシュ・マネージャは、抽出されたコンテンツに基づく情報を記憶するように構成され、クエリ受信器が第1のクエリに一致する第2のクエリを受信したことに応答して、記憶された情報をユーザ・デバイスに選択的に提供してユーザに提示する。
米国特許出願公開第2014/0372515号の文書では、ネットワークを介してリモート・サーバと通信し、サーバによって提供されるコンテンツまたはサービスへのアクセスを提供するようになされたクライアントベースのコンピュータ・システムが開示されており、このシステムはストレージ・デバイスおよびキャッシュを含む。キャッシュは、ネットワークを介してサーバと通信し、クライアントからサーバへの要求をインターセプトし、サーバからの応答をストレージ・デバイスに記憶するようになされる。キャッシュはさらに、ネットワークを介してサーバに要求をいつ送信すべきかを自動的に決定するようになされる。
知られている解決策の欠点は、関係する様々なシステム、すなわち、コンテンツ・サーバ、キャッシング・システム、およびクライアント・システムの間のネットワーク・トラフィックが依然として継続的に比較的高いことである。これは特に、シングル・ページ・アプリケーションが動的に変化するコンテンツへのアクセスを提供する場合に当てはまる。
したがって、不十分な状況、すなわち、コンテンツ・デリバリ・ネットワークにおける不要なオーバーヘッド・ネットワーク・トラフィックを克服し、動的に変化するコンテンツへのアクセスを可能にするWebページを使用するコンテンツ・アイテムの最新バージョンへの信頼できるアクセスをなお提供することが必要であり得る。
本発明の一態様によれば、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのコンピュータ実装方法が提供され得る。この方法は、コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値(seed value)を保持することと、グループのコンテンツ・アイテムの1つが更新されたと判定すると、コンテンツ・アイテムのグループのシード値を更新することと、を含み得る。
さらに、この方法は、グループのコンテンツ・アイテムの1つを関連するシード値と共にキャッシング・システムにキャッシングすることと、キャッシング・システムによって、API要求結果としてグループのコンテンツ・アイテムを要求するAPI要求を受信することであって、API要求のパラメータは選択されたシード値である、受信することと、を含み得る。
本発明の他の態様によれば、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのキャッシング・システムが提供され得る。このシステムは、コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持するための手段と、グループのコンテンツ・アイテムの1つが更新されたと判定すると、コンテンツ・アイテムのグループのシード値を更新するための手段と、グループのコンテンツ・アイテムの1つを関連するシード値と共にキャッシング・システムにキャッシングするための手段と、キャッシング・システムによって、API要求結果としてグループのコンテンツ・アイテムを要求するAPI要求を受信するための手段であって、API要求のパラメータは選択されたシード値である、受信するための手段と、を備え得る。
コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための提案したコンピュータ実装方法は、複数の利点、技術的効果、貢献、または改善、あるいはそれらの組合せを提供し得る。
クライアントと、典型的にはデータ・センタのバックエンド・サーバとして実装されるコンテンツ管理システムとの間のネットワーク・トラフィックは大幅に削減され、その結果、利用可能なリソースがより効率的に使用される。バックエンド・コンテンツ・サーバ・システムまたはコンテンツ管理システムと、典型的には情報をレンダリングするためのブラウザが備えられたクライアント・システムなどの情報消費デバイスとの間の通信ネットワークに典型的に実装されるキャッシュ・システムは、不要な無制御の要求をバックエンド・システムに送信するのではなく、分散型などのキャッシング・システムにキャッシングされたコンテンツ・アイテムを可能な限り最新に保てるようになされ得る。このために、クライアントとキャッシュ・システムとの間のインテリジェントな通信プロトコルは、クライアント・システム内のコンテンツ・アイテムの現実性(actuality)を制御するための手段を提供し得る。
キャッシュ・システムは、キャッシュ・システムにキャッシングされたコンテンツ・アイテムが陳腐化している(outdated)と判定された場合にのみ、コンテンツ・アイテム、具体的にはコンテンツ・アイテムの更新バージョンをコンテンツ管理システムに要求し得る。これは、同じWebページ(またはWebアプリケーション)上に静的コンテンツならびに動的に変化するコンテンツを含むシングル・ページ・アプリケーションが使用される環境で特に有利であり得る。
コンテンツ・アイテムの粒度および制御ならびにそれらの現実性は、コンテンツ・アイテムのグループを定義して設定され得る。これにより、バックエンド・システムおよびキャッシュ・システムの間のネットワークの利用可能な帯域幅、ならびにキャッシュ・システムおよびクライアントの間のネットワーク容量に依って、きめ細かいまたは粗いキャッシュ管理戦略に従い得る。また、この設定性(configurability)は、既存のリソースがより無駄なく利用される方法に影響を与え得る。
本明細書で提案している、新規のキャッシュ・シード・パラメータを利用する新たなキャッシング・アプローチにより、API応答を無限時間キャッシュすることが可能になり得る。これを実現するために、関連するクラウド・サービスは、サービスによって公開されるアーティファクト(すなわち、コンテンツ・アイテム)のタイプごとの現在のキャッシュ・シード値(たとえば、コンテンツ用の1つのキャッシュ・シード、およびアセット用の別のキャッシュ・シード)を追跡する。そのようなタイプのインスタンスが作成、変更、または削除されるたびに、対応するキャッシュ・シード値は新たな一意の値(これは従来使用されたことがなかった)に更新され得る。クライアントは、対応するREst APIを介して所与のタイプの現在のシード値を取り出し得る。
さらに、このアプローチにより、ユーザは、クライアント側でロードされる情報がどれだけ新しいものである必要があるかを決定することが可能になり得る。この情報の新しさはロードされるキャッシュ・シード値と同じである。すなわち、データが1分間古くなることをクライアントが許容し得る場合、クライアント・システムはシード値を毎分再ロードする。クラウド・サービス(すなわち、コンテンツ管理システム)によって提供されるライフ(life)・データの更新がないときは、シード値は後続のAPI呼び出しで不変であり、依然としてCDNキャッシュ、すなわち、キャッシュ・サーバから完全にサービス提供される。このアプローチは、特定の時間に更新されるが必ずしも信頼できる安定したスケジュールで更新されないサイトにとって特に有利であり得る。これはWebサイトの典型的なケースを表し得る。更新後、全てのクライアント・システムは最長で1分後に現在のデータを確認するが、変更がない長期間の間、CDNのキャッシュ・システムによって全ての応答が処理される。クライアントは、キャッシュ・シード・パラメータを省略するか、または再ロードすることによって、常に最新のデータを自由にロードすることができる。
さらに、CDN中間レイヤ、すなわち、キャッシュ・サーバからの更新チェックが頻繁に回避されるので、バックエンド・サーバ(すなわち、CMS)での負荷は大幅に削減され得る。これにより、バックエンド・サーバへの通常の要求に対する応答時間が良好になり、計算能力の要件が低くなり得る(すなわち、より小型のより安価なサーバになり得る)。
以下では、システムならびに方法に適用可能な本発明の概念の追加の実施形態について説明する。
1つの有利な実施形態によれば、この方法は、キャッシング・システムにおいて、具体的にはAPI要求を受信した後に、関連するシード値と選択されたシード値との相違を特定すると、API要求結果として更新されたそれぞれのコンテンツ・アイテムを、具体的にはコンテンツ管理システムに要求することをさらに含み得る。要求およびキャッシング・システム上のコンテンツ・アイテムのシード値が同一である場合、キャッシング・システムは単にキャッシング・システムに記憶されたシード値を返す。しかしながら、シード値が変更されていない(すなわち、クライアントおよびキャッシング・システムで同一である)ので、何も実行されず、具体的には、バックエンド・システムに要求が全く送信されなくてもよい。
他の有利な実施形態によれば、この方法は、キャッシング・システムにおいて、グループのコンテンツ・アイテムに関するAPI要求を定期的に受信することをさらに含み得る。これはクライアントのブラウザでSPAのコンテンツを定期的にリフレッシュするために実行され得る。「定期的に」とは、「定期的な時間間隔で」を意味するか、またはブラウザのクライアント・システムが受け取る他のイベントによってトリガされることを意味し得る。たとえば、コンテンツ・アイテムのコンテキストに属する予測不可能な時間間隔でメッセージが受信され、そして、シード値が異なる場合、クライアント/ブラウザは、更新されたコンテンツ・アイテムを取得するために、キャッシング・システムに要求を自動的に送出し得る。これは動的Webページにとって特に価値があり得る。
この方法の1つの有用な実施形態によれば、API要求は、API要求結果として異なるコンテンツ・アイテム・タイプのグループに属するアイテムのコンテンツを要求し得る。これにより、上述のメカニズムは、異なるグループのコンテンツ・アイテムにも適用され得る。これはまた、異なるコンテンツ・アイテム・タイプを扱う動的Webページにとって特に価値があり得る。したがって、グループは、CMSの全てのコンテンツ・アイテムのうちの、1つのコンテンツ・タイプの全てのコンテンツ・アイテムを表し得、すなわち、1つのタイプの全てのコンテンツ・アイテムが1つのグループに含まれる。この場合、グループは不要になり、タイプのみに注目してもよい。
この方法の1つの許容可能な実施形態によれば、API要求のパラメータは、異なるタイプのシード値を入力とするXOR関数の結果であり得る。これはネットワーク・トラフィックを低く保つための簡単な方法を表し、その理由は、異なるコンテンツ・アイテム・タイプの2つ以上のシード値のシード値が結合されるためである。このため、異なるコンテンツ・アイテム・タイプの2つのシード値が変化した場合、またはクライアントによって要求された場合、XOR関数を2つのシード値に適用することによって、既知のシード値を結合することができる。
高度な実施形態によれば、この方法は、キャッシング・システムにおいて、API要求結果のコンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の時間値を使用することをさらに含み得る。この時間値は、技術的に可能な最大値(たとえば、最大の整数値)に近いか等しくてもよい。これにより、コンテンツ・アイテムは、実際に陳腐化するまでキャッシング・システム上にキャッシングされ得る。ブラウザ/クライアントの要求によるコンテンツ・アイテムの要求が原因で、誤った更新がトリガされなくなり得る。
他の任意選択の実施形態によれば、この方法は、コンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の、たとえば、技術的に可能な最大値に近いまたは等しい時間値を、具体的にはキャッシング・システムからクライアントに送信することを含み得る。これにより、クライアント/ブラウザは、キャッシング・システムでシード値の相違が特定されるまで、コンテンツ・アイテムの有効期間がほぼ無制限であると想定する。
さらに強化された1つの実施形態によれば、この方法は、グループのコンテンツ・アイテムの1つに関連するシード値の更新を示す通知を、具体的にはCMSサーバによって、Webソケットなどのプッシュ技術を使用してキャッシュ・サーバをバイパスすることによって、クライアントにプッシュすることをさらに含み得る。プッシュ技術の仕組みにより、クライアントは通知を受信し、シード値が期限切れになっている可能性があると判定し得る。このとき、クライアントは、新たに受信した関連するシード値と共に、コンテンツ・アイテムの更新バージョンをキャッシュ・システムに要求し得る。キャッシング・システムは、キャッシングされたコンテンツ・アイテムのシード値とAPI要求で受信したものとが異なると判定し得る。これに基づいて、キャッシング・システムは、新たなシード値を有する更新されたコンテンツ・アイテムをコンテンツ管理サーバに要求し得る。
この方法の1つの実際的な実施形態によれば、コンテンツ・アイテムは、SPAの要素または別の方法で動的に生成されるコンテンツであり得る。このコンテキストでは、本明細書で提案した概念は、その完全な利点のセットをもたらし得る。
方法の他の実際的な実施形態によれば、API要求結果は検索クエリの結果であり得る。これは提案した概念の一般的な使用例を表し得る。しかしながら、コンテンツ・アイテムは、ストリーミング分析またはビジネス・インテリジェンスおよびレポート・システムによっても配信および管理され得る。
1つの統合された実施形態によれば、この方法は、グループのコンテンツ・アイテムの1つを関連するシード値と共にキャッシング・システムにキャッシングすることの前に、キャッシング・システムにおいてAPI要求を、具体的にはクライアントから受信することと、API要求結果を、具体的にはCMSに要求することと、をさらに含み得る。これにより、ループを閉じることができ、陳腐化したコンテンツ・アイテムがクライアントに配信されて使用されることがなくなり得る。
この方法の他の強化された実施形態によれば、コンテンツ・タイプのシード値のいずれもが、具体的にはキャッシング・システムもしくはCMS、または異なるCMSまたは検索システムの複数のコンテンツ・アイテムなどのシード値を扱う独立したサポート・システムに要求可能であり得る。
さらに、実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれらに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能な、関連するコンピュータ・プログラム製品の形態をとり得る。この説明の目的で、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに関連して使用するために、プログラムを記憶、通信、伝搬、または輸送するための手段を含み得る任意の装置であり得る。
本発明の実施形態は、様々な主題を参照して説明していることに留意されたい。具体的には、いくつかの実施形態は、方法タイプの請求項に関連して説明しているが、他の実施形態は、装置タイプの請求項に関連して説明している。しかしながら、当業者は、上記および下記の説明から、別段の通知がない限り、あるタイプの主題に属する特徴の任意の組合せに加えて、異なる主題に関連する特徴間の、具体的には、方法タイプの請求項の特徴と装置タイプの請求項の特徴との間の任意の組合せも本文書内に開示していると見なされることを察するであろう。
上記で定義した態様および本発明のさらなる態様は、以下に説明する実施形態の例から明らかであり、実施形態の例を参照して説明するが、本発明はそれらに限定されない。
本発明の好ましい実施形態を単なる例として、以下の図面を参照して説明する。
コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための本発明のコンピュータ実装方法の一実施形態のブロック図である。 異なるデータ・センタ内の2つのCMS、キャッシュ・システム、およびクライアントを有する一実施形態のブロック図である。 CDNからキャッシュ・シード・サービスによってサポートされるコンテンツ・サービスへのデータフローの一実施形態のブロック図である。 コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための本発明のキャッシング・システムの一実施形態のブロック図である。 図4によるキャッシング・システムを含むコンピューティング・システムの一実施形態を示す図である。
本説明の文脈では、以下の慣例(conventions)、用語、または表現、あるいはそれらの組合せを使用し得る。
「キャッシャビリティ」という用語は、発信元のシステムよりも効率的な方法でキャッシングされるコンテンツ・アイテムの特性を表し、すなわち、データ、具体的にはWebページのデータ、さらに具体的にはシングル・ページ・アプリケーションのデータを記憶して、より高速にアクセスできるようにするシステムの能力を表すものである。本文書の文脈でのシステムおよび焦点は、クライアント・システムからコンテンツ・ストレージ・バックエンド・システムへのネットワーク・トラフィックを削減する(ひいてはバックエンド・サーバへの負荷も軽減する)ことを可能にし得るキャッシング・システムである。キャッシング・システムは、キャッシング・システムに現在記憶されている、すなわち、キャッシングされているコンテンツ・アイテムが古いことが明らかな場合にのみ、特定のコンテンツ・アイテムをクライアント・システムへの配信のためにコンテンツ・ストレージ・バックエンド・システム(たとえば、コンテンツ管理システム)に要求することができる。
「API要求結果」という用語は、アプリケーション・プログラミング・インターフェース(API)への関数呼び出しに応答したシステムの回答を表し得る。
「コンテンツ・デリバリ・システム」という用語は、あらゆる種類のコンテンツ・アイテムを記憶する単一コアの分散システムを示す場合がある。これは、コンテンツ管理システム、トランザクション・システム、またはその両方の組合せであってもよい。
「一意のシード値」という用語は、コンテンツ・アイテムの特定のクラスまたはグループに一意の数値を表し得る。数値の代わりに、英数字の値または他の任意のデジタル・パターンも使用され得る。一意のシード値、または単にシード値の1つの例は、単一のコンテンツ・アイテムのバージョン番号であり得る。しかし、本明細書で提案する概念はコンテンツ・アイテムのグループに基づいており、グループ内のコンテンツ・アイテムの1つが変更される場合、一意のシード値が変更される可能性がある。グループは、コンテンツ管理システム(または複数のコンテンツ管理システムの組合せ)における特定のタイプの全てのコンテンツ・アイテムで構成されてもよいし、特定のタイプのコンテンツ・アイテムのサブグループ、あるいは主題に従って編成された異なるタイプのコンテンツ・アイテムのグループであってもよい。
「コンテンツ・タイプ」という用語は、コンテンツ・アイテムのデータ・タイプを示すことがある。典型的なコンテンツ・タイプには、テキスト、画像、音声、ビデオ、およびそれらの組合せが含まれるが、これらに限定されなくてもよい。しかし、任意の構造化データ、半構造化データ及びいわゆる非構造化データが使用されてもよい。具体的には、1つのグループは、1つのコンテンツ・タイプの全てのコンテンツ・アイテムで構成されてもよい。
「キャッシング」という用語は、高速アクセスを確保するためのデータの中間記憶を表し得る。データの記憶は、典型的にはデータ・シンクの近くで実行され得る。
「API要求」という用語は、応答をトリガするためにアプリケーション・プログラミング・インターフェースをアドレス指定する関数呼び出しを表し得る。典型的には、応答はデータのセットである。API要求は典型的には、折返し受信したいデータのセットを指定する1つまたは複数のパラメータを含む。
「パラメータ」という用語は、本明細書では関数呼び出しの意味でのパラメータ、すなわち、API要求の一部としての変数を表し得る。特定のパラメータは、クライアント・システムにおいて/クライアント・システムのために要求された、現在利用可能なまたは新たに共有されるコンテンツ・アイテムの特定のバージョンを示す、たとえば、クライアント・システムのブラウザに表示される、コンテンツ・アイテムのシード値であり得る。
「XOR関数」という用語は、排他的に入力ビットの一方が論理「1」であり、他方の入力ビットが論理「0」である場合に、真出力を提供するビット演算を表し、XORは「排他的論理和(exclusive or)」の略である。この排他的関数(exhaust function)は、より長いビットのシーケンス(たとえば、バイト)にも適用され、その場合、この関数は典型的にはビット単位で実行される。あるいは、ハッシュ関数が使用され得る。
「キャッシュ有効期間閾値」という用語は、タイムスタンプとしても実装可能な数値であって、その経過後に、キャッシングされたコンテンツ・アイテムが期限切れになり得る、すなわち、実際のものではなくなり、または陳腐化し得る数値を表し得る。
「シングル・ページ・アプリケーション」(SPA)という用語は、ごく一部しか更新されない場合に、新しいWebページ全体をサーバからロードするのではなく、Webページのサブセットを動的に書き換えることによって、ユーザとやりとりするWebアプリケーションまたはWebサイトを表し得る。このアプローチにより、連続するページ(またはページの一部)間のユーザ体験の中断が回避され、アプリケーションがよりデスクトップ・アプリケーションのように振る舞い得る。SPAでは、必要なコード、たとえば、HTML、JavaScript、およびCSS(カスケード・スタイル・シート)が1回のページ・ロードで取り出され、または適切なリソース、すなわち、コンテンツ・アイテムが動的にロードされ、必要に応じて、典型的にははユーザ・アクションに応答してページに追加される。ページは過程のどの時点でも再ロードされず、制御が他のページに転送されることもない。ユーザとこのシングル・ページ・アプリケーションとのやりとりは、多くの場合、目に見えないところでのWebサーバとの動的な通信を含み得る。
「中間レイヤ」という用語は、コンテンツ管理バックエンド・システムとクライアント・システムとの間に挟まれたシステム、すなわち、本文書の文脈ではキャッシング・システムを表し得る。
「3層コンテンツ・デリバリ・システム(3-tier-content deliverysystem)」という用語は、ネットワークおよびキャッシング・システムの中間レイヤを介してコンテンツ・ストレージ・システムからクライアントにコンテンツ・アイテムを配信するためのアーキテクチャを表し得る。
「コンテンツ管理システム」(CMS)という用語は、デジタル・コンテンツ、すなわち、コンテンツ・アイテムの作成および変更を管理することを可能にするハードウェア・システムおよびソフトウェア・コンポーネントの組合せを表し得る。これらのシステムは、典型的には、コラボレーション環境において複数のユーザをサポートすることによって、異なるスタイルの統治およびワークフローでドキュメント管理を実行することが可能になる。本文書の文脈では、典型的には、コンテンツ・アイテムは、シングル・ページ・アプリケーション専用であり得るCMSによって管理される。CMSのもう1つの特徴は、コンテンツの作成、公開、およびコンテンツ・アイテムの表示が分離されていることである。
「クライアント」という用語は、たとえば、キャッシング・システム、ネットワーク・サーバ、バックエンド・システム、ストレージ・システムなどの他のシステムのネットワークの情報およびサービスにアクセスするためのユーザ・インターフェースとして機能するデジタル・ネットワーク内のエンド・ポイント・システムを表し得る。クライアント・システムの例には、パーソナル・コンピュータ、ワークステーション、タブレット・コンピュータ、携帯電話、または他の任意のモバイル・デバイスもしくは特別な専用デバイスが含まれる。この意味で、受信器を有するカメラ、または関連するコンピューティング・リソースを有する車の中のスクリーンもクライアントになり得る。
「コンテンツ・デリバリ・ネットワーク」(CDN)またはコンテンツ・ディストリビューション・ネットワークという用語は、プロキシ・サーバおよびそれらに関連するデータ・センタの地理的に分散したネットワークを表し得る。目標は、サービスを区域的に分散させてエンドユーザに関連付けることによって、高可用性および高性能を提供することであり得る。このため、ユーザの特定のグループは、要求したコンテンツを主に特定のデータ・センタから受信し、例外的にのみバックアップ・データ・センタから受信し得る。データ・センタは、たとえば、メディア・ファイル、ソフトウェア、ドキュメント、アプリケーション、ライブ・ストリーミング・データ、オンデマンド・ストリーミング・データ、ソーシャル・メディア・サイトへのアクセスなど、ダウンロード可能なオブジェクトの形態でデジタル・コンテンツを配信し得る。
以下に、図の詳細な説明を示す。図中の全ての説明(instructions)は概略的なものである。最初に、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための本発明のコンピュータ実装方法の一実施形態のブロック図を示す。その後、さらなる実施形態、ならびにコンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのキャッシング・システムの実施形態を説明する。
図1は、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのコンピュータ実装方法100の好ましい実施形態のブロック図を示している。コンテンツ・デリバリ・システムは異なるレイヤ、すなわち、バックエンド・サーバ、キャッシング用の中間レイヤ、および情報コンシューマ・レイヤ、すなわち、クライアントで実装され得る。したがって、コンテンツ・デリバリ・システムは、クライアント・システムにコンテンツを提供するようになされる。この方法は、コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持すること102を含む。コンテンツ・タイプは、単純な形態では、コンテンツ・デリバリ・システム内の全てのテキスト・コンテンツ・アイテムに関連し、より複雑な実装では、コンテンツ・タイプ(場合によりサブタイプも含む)は、コンテンツ・タイプのサブセット(たとえば、特定の形式のテキスト、もしくは特定の包括的な主題に関連するテキスト)を含み、または様々な単純なコンテンツ・タイプに関連し、コンテンツの主題(たとえば、特定の会議に関連するレポート、画像、ビデオ・クリップ)に焦点を当て得る。コンテンツ・タイプには、テキスト(テキスト・タイプのサブタイプには、テキストの様々な形式、たとえば、PDF形式、TXT形式、HTML形式、OpenDocument形式などが含まれ得る)、ピクセル・グラフィックもしくはベクター・グラフィック、音声ファイル、ビデオ・ストリーム、ならびに検索エンジン、データベースなどからの結果が含まれ得る。
方法100はまた、グループのコンテンツ・アイテムの1つが更新されたと判定された場合104、コンテンツ・アイテムのグループのシード値(たとえば、バージョン番号またはハッシュ値と類似のもの)を更新すること106を含む。
方法100はまた、グループのコンテンツ・アイテムのうちの1つ(すなわち、少なくとも1つ)を関連するシード値と共にキャッシング・システムにキャッシングすること108を含む。このとき、コンテンツ・アイテムは、クライアント・システムによって(典型的にはブラウザ内であるが、他の任意のデータ受信アプリケーション内にも)取り入れることが可能な(digestible)任意のデータ、すなわち、静的コンテンツ、動的コンテンツ、検索結果のリストなどであり得る。キャッシング・システムは、CDNの一部、すなわち、関連する配信サーバであり得る。しかしながら、配信サーバは、バックエンドCMSシステムも実行するハードウェア・システムのサービスとしても実装されることにも気付くであろう。これはCDNの特定の実装または構成に依存し得る。
さらに、方法100はまた、キャッシング・システムによって、API要求結果としてグループのコンテンツ・アイテムを要求する、具体的にはクライアント/関連するブラウザからのAPI要求を受信すること110であって、API要求のパラメータは選択されたシード値である、受信すること110を含む。選択されたシード値を示すために使用されるパラメータは、クライアントおよびCDNの間の通常の既存のAPI呼び出しの拡張と考えられる。従来のAPI呼び出しが使用される場合、シード値パラメータがなくなり、これはキャッシング・サーバが従来の条件下で動作することを意味する。このため、新たに提案した方法は、従来のコンピューティング環境、ならびに本明細書で提案した概念をサポートするコンピューティング環境で使用され得る。いかなる場合でも、技術的な競合は発生しない。
図2は、異なるデータ・センタ内の2つのCMS、キャッシュ・システム212、および複数のクライアント・システム218を有する一実施形態のブロック図を示している。コンテンツ・デリバリ・ネットワークは、例示的には、第1のデータ・センタ202および第2のデータ・センタ220を含み得る。両方のデータ・センタ202、220はそれぞれコンテンツ管理システム(図示せず)を含み、各コンテンツ管理システムは、オーサリング・コンポーネント204、222、および配信コンポーネント208、226を有する。コンテンツ・アイテム(図示せず)が作成または更新された場合、それぞれのオーサリング・システム204、222からそれぞれの配信システム208、226に公開すること206、224ができる。作成もしくは更新された各コンテンツ・アイテム(CI)、またはコンテンツ・アイテムが属するグループは、関連するシード値を有する。作成されたコンテンツ・アイテムは、特定のコンテンツ・アイテム・グループのシード値1234を有し得る。コンテンツ・アイテムが更新(すなわち、変更)される場合、シード値も同様に値1235などに更新され得る。
対応するコンテンツ・アイテムが、第2のデータ・センタ220に存在し得る。特別なサービスが、オーサリング・コンポーネント204とオーサリング・コンポーネント222との間(参照番号228と比較されたい)、ならびに配信コンポーネント208と226との間(参照番号230と比較されたい)の同期を容易にし得る。第2のデータ・センタ220内のまだ更新されていないコンテンツ・アイテムのシード値は、たとえば、9876であり、更新後は9877になり得る。コンポーネント間の同期は、特定のコンテンツ・アイテムが変更された可能性があることを示し得る。これに基づいて、関連するコンテンツ・アイテムの第2のデータ・センタでのシード値が、自律的にシード値を変更し得る。
さらに、図2は、特定のコンテンツ・アイテム214およびそれに関連する実際のシード値をキャッシングするようになされたCDNの一部としてのキャッシング・サーバ212を示している。クライアント・システム218がAPI呼び出しおよびネットワーク接続216を介してキャッシング・システム212に特定のコンテンツ・アイテムを要求し、特定のコンテンツ・アイテムがキャッシング・システム212で利用可能でない場合、キャッシング・システム212はネットワーク接続210を介して第1のデータ・センタ内のCMSのコンテンツ・アイテムに(API呼び出しを介して)要求を転送する。
このために、SPAの一部分を更新する目的で、クライアント・システム218は、API要求の追加パラメータとしての特定のシード値と共にコンテンツ・アイテムを要求する。API要求内のシード値と、キャッシング・システム212内のコンテンツ・アイテム214のシード値とが同一である場合、バックエンド・システムに関しては何もする必要がない。キャッシング・システムは、単にシード値をクライアントに返す。2つのシード値が異なる場合、キャッシング・システム212は、要求をバックエンド・システム(すなわち、CMS)に転送し、データ・センタ202のコンテンツ管理システムからコンテンツ・アイテムを更新する。このため、通常、ネットワーク・トラフィックは劇的に減少する。
一般的な考え方は、コンテンツ・アイテムの分類ごとに、すなわち、グループまたはコンテンツ・タイプあるいはその両方ごとに、シード値を追跡することである。シード値は、データ・センタIDおよび分類情報をエンコードする必要がある。単純な形態の分類は、単一の小文字、すなわち、c=コンテンツ、a=アセット、l=レイアウト・マッピング、t=タイプ、i=イメージ・プロファイル、小文字のo=その他、によって行われ得る。このため、ワシントンのデータ・センタのコンテンツ・アイテムAの要求は、シード値wdc:c:1234を含み、同様に、フランクフルトのアセット・データ・センタのシード値は、fra:a:5678としてエンコードされる。集約されたシード値を算出するために、XOR関数が使用され得る。関与する全ての小文字がアルファベット順に並べ替えられる場合、アセットおよびコンテンツの結合シード値は(例示的には)fra:ac:9012になる。しかしながら、そのような形式はユーザには公開されることはなく、キャッシュ・シード・サービスによって生成される非表示のシード値として使用され得る。
このキャッシュ・シード・サービスは、特定のキャッシュ・シード・サービスAPI呼び出しを介してアクセス可能であり得る。シード値をロードするためのクライアント・システムからの呼び出しは、次の形態を有し得る:
GET/delivery/v1/seeds?classifications={classifications}
そして、JSON(JavaScriptオブジェクト表記:JavaScriptObject Notation)応答は、所与の分類の結合シード値と、分類ごとの個別シード値とを含み得る。たとえば、/delivery/v1/seeds?classifications=content,asset,content-typeは以下を返し得る:
{
”content”: “fra: c: 1234”,
“asset”: “fra:a:354354”,
”content-type”: “fra:t: 3253466”,
“combined”:“fra:act 348767593”:
}
キャッシュ・シード・サービスAPIの他の例は、次のシード検証呼び出し(ディスパッチャによるコート(court))であろう:
GET /delivery/v1/seed/validation/{seed-value}
関連するJSON応答は検証結果を含む。失格の場合は、有効なシード値が返される。たとえば、/delivery/v1/seeds/validation/ Classifications =wcd:ac:123456は以下を返し得る:
{
“valid”: true
}または
{
“valid”: false,
“value”: “fra:ac: 32465231”
}
少なくとも3つのケースを区別する必要がある。
ケース1:CDNでのキャッシュ・ミス
クライアントは要求と共にキャッシュ・シード値を送信し、キャッシュ・ミスがCDN、たとえばキャッシング・システム212で発生する。次いで、バックエンド・サーバの一部としてのディスパッチャ(図3と比較されたい)は、シード値内に提供されたデータ・センタ情報を使用して、シード値がそのグローバル・データ・センタで生成されたか否かをチェックすることができる。提供されたシード値が現在のシード値と一致する場合、ディスパッチャは通常通りAPI要求を引き渡し(dispatch)、設定されたエッジ・コントロール・キャッシュ・ヘッダ(非常に長い最大寿命(maximum age))をセットすることができる。
提供されたシード値が一致しない場合、ディスパッチャはキャッシュ・シード・サービスを呼び出して現在のデータ・センタの有効なシードを取得し(/validate...を使用)、シード値を現在の値に単に置き換えた同URLへのリダイレクトを送信する。これは非常にまれなケース(たとえば、データ・センタのフェイルオーバーの場合)でしか発生しないはずであるということに気付くであろう。これにより、別のデータ・センタで生成された特定のコンテンツ・アイテム(またはコンテンツ・アイテムのグループ)のより最近のシード値の途中段階データ(stage data)が提供されないようになり得る。
ケース2:CDN上の期限切れのシード値
クライアント200がそれぞれのAPI要求と共にキャッシュ・シード値を送信し、CDNに期限切れのキャッシュ値がある場合、ディスパッチャはデータ・センタ情報を検証することができ(上記と同様)、一致した場合、ディスパッチャは実際のAPI呼び出しを支障なくスキップし、代わりに304コード「変更なし(not modified)」を返すことができる。その結果、CDNはキャッシュ値がまだ有効であると通知され、CDNはこれを有効期限付きキャッシュ(expiration cache)に戻す。一致しない場合、リダイレクト・コマンドが送信される(上記のキャッシュ・ミス・ワークフローと同じ)。
ケース3:CDN上の有効期限内のキャッシュ・ヒット
この場合、API要求の結果は通常通りCDNから提供される。
図3は、CDNからキャッシュ・シード・サービス310によってサポートされるコンテンツ・サービスへのデータフローの一実施形態のブロック図300を示している。API要求は、例示的にはAKAMAIシステムであり得る(他のCDN管理システムも同様に使用され得る)コンポーネント304によって管理されるCDNに入来302し得る。CDN管理コンポーネント304は、要求をバックエンド・サーバに送信する。バックエンド・サーバはディスパッチャ306を含み、ディスパッチャ306から要求がコンテンツ配信用の特定のサービス308に転送される。並行して、ディスパッチャ306は、キャッシュ・シード・サービス310と連絡をとる。キャッシュ・シード値内のデータ・センタ情報が現在のデータ・センタと一致しない場合、キャッシュ・シード・サービスが呼び出され、それぞれのリダイレクト・コマンドが送信される。一致した場合、引き渡しが従来のシステムと同様に実行され、長いmax-age値が送信される。
クライアント側でのキャッシュ・シード管理は次のように実行され、全てのクライアントは、自由にキャッシュ・シードの概念を無視し、従来のシステムとして動作することができる(キャッシングは知られているシステムと同じくらい不十分なままである)。しかしながら、特定のコンテンツ・アイテムまたはそのクラスの現在のキャッシュ・シード値が、パブリックAPI呼び出しを介して利用可能である。キャッシュ・シード値は「ページ」レンダリングのコンテキストでも利用可能になされ、その後の要求で有効なシード値を使用できるようになる。クライアントは、適切な時間に、たとえば一定の時間間隔で(たとえば、毎分)、またはユーザが操作する更新ボタンによってトリガされて、シード値を自由に再ロードすることができる。
明らかにまれなケースではあるが、データ・センタの移行がCDN管理コンポーネント304によって対処される。一方、典型的なフローでは、所与のクライアントの要求はいつも同じデータ・センタに向けられ得る。第1のデータ・センタから得られたシード値は、まだ有効であっても、第2のデータ・センタでは有効でなく、その結果、クライアントは現在のシード値の第2のデータ・センタのバージョンへの(上記の例では、第1のデータ・センタDC1:c:1235からDC2:c:9877への)リダイレクトを取得し得る。
コンテンツ・アイテムが長期間更新されない場合、その間キャッシング・システム上のコンテンツ・アイテムは不変のままであり、すなわち、キャッシング・システムは、CMSからのキャッシング・システム内のコンテンツ・アイテムの更新が不要であり得る。したがって、しばらくすると(after a while)、ほとんど全てのAPI呼び出しでCDNキャッシュ・ヒットが発生するはずである(すなわち、コンテンツ・アイテムがキャッシング・システムで見つかる)。
クライアント・システムは、特定の呼び出しによってシード値を検証する頻度を制御することもできる。その結果、最新のシード値がそれぞれのAPI要求のパラメータとして使用される場合、最大待ち時間は発行された待ち時間(max-age)である。
図4は、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するための本発明のキャッシング・システム400の一実施形態のブロック図を示している。また、コンテンツ・デリバリ・システムは、本明細書では、クライアント・システムにコンテンツを供給するようになされており、キャッシング・システムは、コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持するための手段、具体的にはそのようになされたシード管理ユニット(またはモジュール)402と、判定ユニット(またはモジュール)406によってグループのコンテンツ・アイテムの1つが更新されたと判定すると、コンテンツ・アイテムのグループのシード値を更新するための手段、具体的にはそのようになされた更新ユニット(またはモジュール)404と、を含む。
さらに、キャッシング・システム400は、グループのコンテンツ・アイテムの1つを関連するシード値と共にキャッシング・システムにキャッシングするための手段、具体的にはそのようになされたキャッシング・ユニット(またはモジュール)と、キャッシング・システムによって、API要求結果としてグループのコンテンツ・アイテムを要求するAPI要求を受信するための手段、具体的にはそのようになされた受信器ユニット(またはモジュール)408と、を含み、API要求のパラメータは選択されたシード値である。
本発明の実施形態は、プラットフォームがプログラム・コードを記憶または実行あるいはその両方を行うのに適しているかに関係なく、事実上任意のタイプのコンピュータと共に実装され得る。
図5は、提案した方法に関連するプログラム・コードを実行するのに適したコンピューティング・システム500、具体的にはキャッシング・システムを一例として示している。
コンピューティング・システム500は、適切なコンピュータ・システムの一例に過ぎず、コンピュータ・システム500が実装可能であるか否か、または上述の機能のいずれかを実行可能であるか否か、あるいはその両方にかかわらず、本明細書に記載の本発明の実施形態の使用または機能の範囲に関する限定を示唆することを意図したものではない。コンピュータ・システム500には、他の多数の汎用または専用のコンピューティング・システム環境または構成で動作可能なコンポーネントが存在する。コンピュータ・システム/サーバ500での使用に適し得るよく知られているコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのいずれか含む分散型クラウド・コンピューティング環境などが含まれるが、これらに限定されない。コンピュータ・システム/サーバ500は、コンピュータ・システム500によって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで説明し得る。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。コンピュータ・システム/サーバ500は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に配置され得る。
図示のように、コンピュータ・システム/サーバ500は、汎用コンピューティング・デバイスの形態で示している。コンピュータ・システム/サーバ500のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット502、システム・メモリ504、およびシステム・メモリ504を含む様々なシステム・コンポーネントをプロセッサ502に結合するバス506を含み得るが、これらに限定されない。バス506は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および種々のバス・アーキテクチャのいずれかを使用するプロセッサ・バスまたはローカル・バスを含む、いくつかのタイプのバス構造のうちのいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスが含まれる。コンピュータ・システム/サーバ500は、典型的には、種々のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ500によってアクセス可能な任意の利用可能な媒体であり得、これには揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体の両方が含まれる。
システム・メモリ504は、ランダム・アクセス・メモリ(RAM)508またはキャッシュ・メモリ510あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ500は、他の取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。単なる例として、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれるもの)に読み書きするためのストレージ・システム512が設けられ得る。図示していないが、取り外し可能な不揮発性の磁気ディスク(たとえば、「フロッピー(R)・ディスク」)に読み書きするための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能な不揮発性の光ディスクに読み書きするための光ディスク・ドライブと、が設けられ得る。そのような例では、それぞれを、1つまたは複数のデータ・メディア・インターフェースによってバス506に接続することができる。以下でさらに図示および説明するように、メモリ504は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラム・モジュール516のセット(少なくとも1つ)を有するプログラム/ユーティリティは、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ504に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの任意の組合せのそれぞれは、ネットワーキング環境の実装形態を含み得る。プログラム・モジュール516は一般に、本明細書に記載のように、本発明の実施形態の機能または方法論あるいはその両方を実行する。
コンピュータ・システム/サーバ500はまた、キーボード、ポインティング・デバイス、ディスプレイ520などの1つまたは複数の外部デバイス518、ユーザがコンピュータ・システム/サーバ500とやりとりすることを可能にする1つまたは複数のデバイス、ならびに/あるいはコンピュータ・システム/サーバ500が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)と通信し得る。そのような通信は、入力/出力(I/O)インターフェース514を介して行うことができる。またさらに、コンピュータ・システム/サーバ500は、ネットワーク・アダプタ522を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはそれらの組合せなどの、1つまたは複数のネットワークと通信し得る。図示のように、ネットワーク・アダプタ522は、バス506を介してコンピュータ・システム/サーバ500の他のコンポーネントと通信し得る。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントを、コンピュータ・システム/サーバ500と併用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
さらに、コンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのキャッシング・システム400は、バス・システム506に接続され得る。
本発明の様々な実施形態の説明は、例示の目的で提示しているが、網羅的であることも、開示した実施形態に限定されることも意図したものではない。記載した実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の適用、または市場に見られる技術に対する技術的改善を最もよく説明するために、または当業者が本明細書に開示した実施形態を理解できるようにするために選択している。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せとして具現化され得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
媒体は、伝搬媒体用の電子、磁気、光学、電磁、赤外線、または半導体システムであり得る。コンピュータ可読媒体の例には、半導体または個体メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、リジッド磁気ディスク、および光ディスクが含まれ得る。光ディスクの現在の例には、コンパクト・ディスク読み取り専用メモリ(CD-ROM)、コンパクト・ディスク読み取り/書き込み(CD-R/W)、DVD、およびBlu-Ray(R)ディスクが含まれる。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリー・スティック(R)、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/行為を実装するための手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成し得る。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/行為の態様を実装する命令を含む製造品を構成するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶され得る。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/行為が実装するように、コンピュータ実装処理を生成するべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させ得る。
図中のフローチャートまたはブロック図あるいはその両方は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定される機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
本明細書で使用する用語は、特定の実施形態を説明するためのものに過ぎず、本発明を限定することを意図するものではない。本明細書で使用する場合、単数形「a」、「an」および「the」は、文脈がそうでないことを明確に示さない限り、複数形も含むものとする。本明細書で使用される場合、「備える(comprises)」という用語、もしくは「備える(comprising)」という用語、またはその両方は、記述した特徴、整数、ステップ、動作、要素、もしくは構成要素、またはそれらの組合せの存在を示すものであるが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、もしくはそれらのグループ、またはそれらの組合せの存在または追加を排除するものではないということはさらに理解されよう。
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、明確に特許請求された他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または行為を含むものとする。本発明の説明は、例示および説明の目的で提示しているが、網羅的であることも、開示した形態の発明に限定されることも意図したものではない。本発明の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本発明の原理および実際の適用を最もよく説明し、企図した特定の用途に適した様々な修正を有する様々な実施形態について本発明を当業者が理解できるようにするために、実施形態を選択し、説明している。

Claims (20)

  1. クライアント・システムにコンテンツを供給するようになされたコンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのコンピュータ実装方法であって、
    コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持することと、
    前記グループの前記コンテンツ・アイテムの1つが更新されたと判定すると、
    前記コンテンツ・アイテムのグループの前記シード値を更新することと、
    前記グループの前記コンテンツ・アイテムの1つを前記関連するシード値と共にキャッシング・システムにキャッシングすることと、
    前記キャッシング・システムによって、API要求結果として前記グループのコンテンツ・アイテムを要求するAPI要求を受信することであって、前記API要求のパラメータは選択されたシード値である、前記受信することと、
    を含む、コンピュータ実装方法。
  2. 前記キャッシング・システムにおいて、前記関連するシード値と前記選択されたシード値との相違を特定すると、
    API要求結果として更新されたそれぞれのコンテンツ・アイテムを要求すること
    をさらに含む、請求項1に記載の方法。
  3. 前記キャッシング・システムにおいて、前記グループの前記コンテンツ・アイテムに関するAPI要求を定期的に受信すること
    をさらに含む、請求項1または2に記載の方法。
  4. 前記API要求は、API要求結果として異なるコンテンツ・アイテム・タイプのグループに属するアイテムのコンテンツを要求する、請求項1ないし3のいずれかに記載の方法。
  5. 前記API要求の前記パラメータは、前記異なるタイプの前記シード値を入力とするXOR関数の結果である、請求項4に記載の方法。
  6. 前記キャッシング・システムにおいて、API要求結果のコンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の時間値を使用すること
    をさらに含む、請求項1ないし5のいずれかに記載の方法。
  7. コンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の時間値を送信すること
    をさらに含む、請求項1ないし6のいずれかに記載の方法。
  8. 前記クライアントに通知をプッシュすることであって、前記通知はグループの前記コンテンツ・アイテムの1つに関連するシード値の更新を示す、前記プッシュすること
    をさらに含む、請求項1ないし7のいずれかに記載の方法。
  9. 前記コンテンツ・アイテムは、シングル・ページ・アプリケーション(SPA)の要素または別の方法で動的に生成されるコンテンツである、請求項1ないし8のいずれかに記載の方法。
  10. 前記API要求結果は検索クエリの結果である、請求項1ないし9のいずれかに記載の方法。
  11. 前記グループの前記コンテンツ・アイテムの1つを前記関連するシード値と共にキャッシング・システムに前記キャッシングすることの前に、
    前記キャッシング・システムにおいて前記API要求を受信することと、
    前記API要求結果を要求することと、
    をさらに含む、請求項1ないし10のいずれかに記載の方法。
  12. コンテンツ・タイプの前記シード値のいずれもが要求可能である、請求項1ないし11のいずれかに記載の方法。
  13. クライアント・システムにコンテンツを供給するようになされたコンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのキャッシング・システムであって、
    コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持するための手段と、
    前記グループの前記コンテンツ・アイテムの1つが更新されたと判定すると、前記コンテンツ・アイテムのグループの前記シード値を更新するための手段と、
    前記グループの前記コンテンツ・アイテムの1つを前記関連するシード値と共にキャッシング・システムにキャッシングするための手段と、
    前記キャッシング・システムによって、API要求結果として前記グループのコンテンツ・アイテムを要求するAPI要求を受信するための手段であって、前記API要求のパラメータは選択されたシード値である、前記受信するための手段と、
    を備える、キャッシング・システム。
  14. 前記キャッシング・システムは、
    前記キャッシング・システムにおいて、前記関連するシード値と前記選択されたシード値との相違を特定すると、API要求結果として更新されたそれぞれのコンテンツ・アイテムを要求するための手段
    を備える、請求項13に記載のキャッシング・システム。
  15. 前記API要求は、API要求結果として異なるコンテンツ・アイテム・タイプのグループに属するアイテムのコンテンツを要求する、請求項13または14に記載のキャッシング・システム。
  16. 前記API要求の前記パラメータは、前記異なるタイプの前記シード値を入力とするXOR関数の結果である、請求項15に記載のキャッシング・システム。
  17. 前記キャッシング・システムにおいて、API要求結果のコンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の時間値を使用するための手段
    をさらに備える、請求項13ないし16のいずれか一項に記載のキャッシング・システム。
  18. コンテンツ・アイテムのキャッシュ有効期間として、事前定義されたキャッシュ有効期間閾値以上の時間値を送信するための手段
    をさらに備える、請求項13ないし17のいずれか一項に記載のキャッシング・システム。
  19. 前記キャッシング・システムは、コンテンツ管理システム、キャッシュ・サーバ、およびクライアントを含む3層コンテンツ・デリバリ・システムの中間レイヤを表す、請求項13ないし18のいずれか一項に記載のキャッシング・システム。
  20. クライアント・システムにコンテンツを供給するようになされたコンテンツ・デリバリ・システムのAPI要求結果のキャッシャビリティを改善するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、プログラム命令を具現化したコンピュータ可読記憶媒体を備え、前記プログラム命令は、1つまたは複数のコンピューティング・システムまたはコントローラによって実行可能であり、前記1つまたは複数のコンピューティング・システムに、
    コンテンツ・タイプのコンテンツ・アイテムのグループごとに一意のシード値を保持することと、
    前記グループの前記コンテンツ・アイテムの1つが更新されたと判定すると、
    前記コンテンツ・アイテムのグループの前記シード値を更新することと、
    前記グループの前記コンテンツ・アイテムの1つを前記関連するシード値と共にキャッシング・システムにキャッシングすることと、
    前記キャッシング・システムによって、API要求結果として前記グループのコンテンツ・アイテムを要求するAPI要求を受信することであって、前記API要求のパラメータは選択されたシード値である、前記受信することと、
    を行わせる、コンピュータ・プログラム製品。
JP2022515836A 2019-09-24 2020-09-22 シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム Active JP7477251B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19199212.2 2019-09-24
EP19199212 2019-09-24
PCT/IB2020/058812 WO2021059113A1 (en) 2019-09-24 2020-09-22 Cachability of single page applications

Publications (2)

Publication Number Publication Date
JP2022549076A true JP2022549076A (ja) 2022-11-24
JP7477251B2 JP7477251B2 (ja) 2024-05-01

Family

ID=68069487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022515836A Active JP7477251B2 (ja) 2019-09-24 2020-09-22 シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム

Country Status (6)

Country Link
US (1) US20210092199A1 (ja)
JP (1) JP7477251B2 (ja)
CN (1) CN114402577A (ja)
DE (1) DE112020004493T5 (ja)
GB (1) GB2603344B (ja)
WO (1) WO2021059113A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636035B2 (en) * 2020-07-31 2023-04-25 Microsoft Technology Licensing, Llc Persisted data cache service

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004027607A2 (en) 2002-09-20 2004-04-01 Mks Inc. Version control system for software development
US20040098463A1 (en) 2002-11-19 2004-05-20 Bo Shen Transcoding-enabled caching proxy and method thereof
US7698304B2 (en) 2006-03-17 2010-04-13 Microsoft Corporation Caching data in a distributed system
US7788291B2 (en) * 2007-09-25 2010-08-31 Barracuda Networks, Inc. Web accelerator apparatus, system, and method
US8516080B2 (en) 2008-12-03 2013-08-20 Mobophiles, Inc. System and method for providing virtual web access
US8782676B2 (en) * 2009-09-30 2014-07-15 Sap Ag System and method for communication between portal applications and portlet containers
US9886681B2 (en) * 2009-11-24 2018-02-06 International Business Machines Corporation Creating an aggregate report of a presence of a user on a network
US20120254949A1 (en) * 2011-03-31 2012-10-04 Nokia Corporation Method and apparatus for generating unique identifier values for applications and services
US8886743B2 (en) * 2011-08-30 2014-11-11 Open Text S.A. System and method of browsing offline and queried content
US9396277B2 (en) * 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Access to supplemental data based on identifier derived from corresponding primary application data
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US10498663B2 (en) * 2014-03-12 2019-12-03 Amazon Technologies, Inc. Profile-based cache management
US10735550B2 (en) * 2014-04-30 2020-08-04 Webroot Inc. Smart caching based on reputation information
US10127301B2 (en) * 2014-09-26 2018-11-13 Oracle International Corporation Method and system for implementing efficient classification and exploration of data
US11132336B2 (en) * 2015-01-12 2021-09-28 Qumulo, Inc. Filesystem hierarchical capacity quantity and aggregate metrics
US10650067B2 (en) 2015-08-13 2020-05-12 Samsung Electronics Co., Ltd. Cloud-enabled architecture for on-demand native application crawling
US10075551B1 (en) * 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
CN106657249B (zh) * 2016-10-25 2019-07-09 杭州迪普科技股份有限公司 更新缓存资源的方法及装置
US10333875B2 (en) * 2016-11-28 2019-06-25 Snap Inc. Processing media content in a messaging system
US10176106B2 (en) * 2017-02-24 2019-01-08 International Business Machines Corporation Caching mechanisms for information extracted from application containers including applying a space guard and a time guard
US10824644B2 (en) * 2017-03-07 2020-11-03 Mcafee, Llc Aggregate, index based, synchronization of node contents
US10541953B2 (en) * 2017-12-13 2020-01-21 Chicago Mercantile Exchange Inc. Streaming platform reader
US10893384B2 (en) * 2018-08-08 2021-01-12 Verizon Patent And Licensing Inc. Methods and systems for managing historical geolocation data for a plurality of mobile devices
FR3090928B1 (fr) * 2018-12-21 2021-07-23 Amadeus Sas Systeme de gestion de donnes synchronise et procede
CN110062280A (zh) * 2019-04-23 2019-07-26 湖南快乐阳光互动娱乐传媒有限公司 一种面向p2p的视频缓存管理、播放方法、系统及介质
US10990459B2 (en) * 2019-08-30 2021-04-27 Chicago Mercantile Exchange Inc. Distributed threaded streaming platform reader

Also Published As

Publication number Publication date
WO2021059113A1 (en) 2021-04-01
GB202204020D0 (en) 2022-05-04
GB2603344A (en) 2022-08-03
US20210092199A1 (en) 2021-03-25
JP7477251B2 (ja) 2024-05-01
DE112020004493T5 (de) 2022-08-18
CN114402577A (zh) 2022-04-26
GB2603344B (en) 2024-02-14

Similar Documents

Publication Publication Date Title
CN100498756C (zh) 被管对象的复制和传送的方法和系统
US11025747B1 (en) Content request pattern-based routing system
US10491702B2 (en) Proxy-based cache content distribution and affinity
US10182127B2 (en) Application-driven CDN pre-caching
US9065835B2 (en) Redirecting web content
US10242100B2 (en) Managing cached data in a network environment
US8090863B2 (en) Partial object distribution in content delivery network
TWI467505B (zh) 支援使用者內容饋入之方法與系統
US9426244B2 (en) Content delivery in a network
US8495177B2 (en) Dynamic application programming interface
US8533296B2 (en) Schema-based feed generation for media syndication
US20120072465A1 (en) Dynamic schema-based api mapping for traversing inter-cloud application boundaries
JP2015509229A5 (ja)
US20070282899A1 (en) System and method for managing and distributing assets over a network
KR20110000655A (ko) 웹-기반 다중사용자 협업
CN109565606B (zh) 混合源架构中的图像变换
JP7477251B2 (ja) シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム
US11930094B2 (en) Mitigating network resource contention
Hiranpongsin et al. Integration of recommender system for Web cache management
US20140258439A1 (en) Shared client caching
US11405686B2 (en) Asynchronous video transcoding
Zhang et al. SMURF: Efficient and Scalable Metadata Access for Distributed Applications from Edge to the Cloud
Canali et al. Content delivery and management
Wang et al. PSVA: A Content-Based Publish/Subscribe Video Advertising Framework
Jyoti et al. Study of Mobile data management and Optimization Techniques

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220410

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240405

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240416

R150 Certificate of patent or registration of utility model

Ref document number: 7477251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150