[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4554723B2 - ネットワーク応答バッファリング動作の管理 - Google Patents

ネットワーク応答バッファリング動作の管理 Download PDF

Info

Publication number
JP4554723B2
JP4554723B2 JP2009505365A JP2009505365A JP4554723B2 JP 4554723 B2 JP4554723 B2 JP 4554723B2 JP 2009505365 A JP2009505365 A JP 2009505365A JP 2009505365 A JP2009505365 A JP 2009505365A JP 4554723 B2 JP4554723 B2 JP 4554723B2
Authority
JP
Japan
Prior art keywords
content
buffering
buffer
requested
handler
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.)
Expired - Fee Related
Application number
JP2009505365A
Other languages
English (en)
Other versions
JP2009533757A (ja
JP2009533757A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009533757A publication Critical patent/JP2009533757A/ja
Publication of JP2009533757A5 publication Critical patent/JP2009533757A5/ja
Application granted granted Critical
Publication of JP4554723B2 publication Critical patent/JP4554723B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • 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/566Grouping or aggregating service requests, e.g. for unified processing
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

コンピュータシステム及び関連技術は、社会の様々な側面に影響を与える。実際、情報を処理するコンピュータシステムの能力は、我々が暮らしかつ仕事をする方法を変化させた。コンピュータシステムの出現以前に手作業で実行された多くのタスク(例えば、文書処理、スケジューリング、及びデータベース管理)は、コンピュータシステムにより現在では一般に処理されている。最近では、コンピュータシステムは、互いに、そして、他の電子デバイスに接続されて、コンピュータシステム及びその他の電子デバイスにより電子データを転送することができる有線及び無線の両方のコンピュータネットワークを形成している。その結果、コンピュータシステムで実行される多くのタスク(例えば、音声通信、電子メールへのアクセス、ホームエレクトロニクスの制御、ウェブ閲覧、及び文書の印刷)は、有線及び/または無線のコンピュータネットワークを介した多くのコンピュータシステム及び/または他の電子デバイスの間の通信(例えば、電子的コンテンツの交換)を含む。
多くのコンピュータ環境では、コンテンツは、要求/応答の形式で交換される。例えば、要求コンピュータシステムのウェブブラウザは、サーバコンピュータシステムのウェブサーバにコンテンツ要求を送信する。サーバコンピュータシステムは要求を受信し、ウェブサーバは要求を処理して(例えば、協働するサーバサイドコンポーネントからなるパイプラインに要求を通す)、要求されたコンテンツを識別する。次に、ウェブサーバは、応答を形成する際に識別した要求されたコンテンツを含める。サーバコンピュータシステムは、要求コンピュータシステムに応答を返信する。要求コンピュータシステムは応答を受信して、ウェブブラウザは要求したコンテンツを提示する。
応答を形成して要求されたコンテンツを含める際、及び要求されたコンテンツを含む応答を送信する場合に、ウェブサーバは様々な異なる技術を利用することができる。ストリーミングは、要求されたコンテンツを含む応答を形成して送信する1つの技術である。ストリーミングは、要求されたコンテンツの一部(複数の部分)が(例えば、アプリケーションコンポーネントから)利用可能になるように、要求されたコンテンツの一部をウェブブラウザに送信するウェブサーバを含む。例えば、音声ファイル/映像ファイルの転送が完了するまで、ウェブサーバは、特定の速度でウェブブラウザに音声ファイル/映像ファイルをストリーミングすることができる。
応答バッファリングは、要求されたコンテンツを含む応答を形成する別の技術である。応答バッファリングは、任意の要求されたコンテンツをウェブブラウザに送信する前に、メモリ内に要求されたコンテンツの複数部分を記憶して、メモリ内に完全な応答を集めるウェブサーバを含んでいる。要求されたコンテンツの収集が完了した後に、完全な応答がウェブブラウザに送信される。例えば、ウェブページ用の全てのHTML部分が集められるまで、ウェブサーバは様々な異なるHTML部分をメモリに記憶することができる。HTML部分の全てが集められた後に、ウェブサーバは完成したウェブページをウェブブラウザに送信することができる。
応答バッファリングは、様々な理由で効果的であり得る。例えば、応答バッファリングは、様々な方法でサーバの性能を向上させることができる。応答バッファリングは、ネットワーク帯域幅の利用をより効率的し、少容量の要求されたコンテンツを含む頻繁な応答の送信に付随するオーバヘッドを(例えば、最適パケットサイズと比べて)小さくする。このことは、動的コンテンツを構築するサーバアプリケーションにとって特に有効であるかもしれない。なぜならこれらのアプリケーションは高い頻度でコンテンツのより小なる部分をしばしば生成するからである。
更に、応答バッファリングは、応答の送信に先立って応答の後処理をできるようにする。例えば、ウェブサーバは、ウェブブラウザへの応答の送信に先立って、応答を圧縮し、暗号化し、フィルタリングし、キャッシュに格納するなどといったことができる。
しかしながら、応答バッファリングは、一部のアプリケーション及びコンテンツタイプには適していないかもしれない。例えば、大容量のコンテンツを生成するアプリケーションは、メモリのオーバヘッド及び/または制約事項のためにコンテンツをバッファリングすることができないかもしれない。更に、一部のアプリケーションは、ストリーミング動作を必要とする場合があり(例えば、映像、音声、その他)、よって応答バッファリングに適合しない。
ウェブサーバプラットフォームはしばしば、各々が異なったバッファリング要件を有する多数のコンテンツタイプ及び多数のアプリケーション技術をサポートする。しかしながら、コンテンツタイプ毎にかつ/またはアプリケーション毎に応答バッファリングを制御する限定されたメカニズムが存在する。更に、バッファリング要件は、例えば、応答のランタイム特性(feature)(例えば、サイズ)に応じて、経時変化するかもしれない。
残念なことに、概してウェブサーバは、変化したランタイム特性に対応する方法を有していない。よって、より適当な応答バッファ動作が特定の応答に対して可能であるときでさえ、ウェブサーバは、従前の設定及び/またはコンテンツタイプもしくはアプリケーションの典型的な特徴に基づいてより適当でない応答バッファ動作を選択するかもしれない。例えば、要求されたコンテンツに対するアプリケーションのハンドルがそれ自体のバッファを設ける(結果として、少なくとも部分的に二重バッファとなる)場合であっても、ウェブサーバは、要求されたコンテンツの複数部分をバッファリングするかもしれない。一方、要求されたコンテンツがより小さいコンテンツ部分を多数含むときでさえ、ウェブサーバは、コンテンツタイプに基づいて要求されたコンテンツをバッファリングしないかもしれない。
更に、一部の環境では、応答バッファリングは、コンテンツに対する転送要件に背く原因になるかもしれない。例えば、最初のバイトまでの時間の要件または特定の転送速度要件を有するバッファリングコンテンツは、コンテンツの転送に最初のバイトまでの時間の要件の超過をもたらすことやまたは特定の転送速度に満たない速度でのコンテンツの転送をもたらすことがあるかもしれない。よって、転送要件を破るのを避けるために、ウェブサーバは、任意のタイプのコンテンツを決してバッファリングしないことをデフォルトにするかもしれない(または、応答バッファリング機能を全く含むことができない)。従って、応答バッファリングから利益を得るそれらのコンテンツタイプさえ、応答バッファリングを利用することが許容されないかまたは利用することができない。
本発明は、ネットワーク応答バッファリング動作を管理する方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、クライアントからのコンテンツ要求を受信する。コンピュータシステムは、コンテンツを転送するときに用いるデフォルトの応答バッファリング動作を有する。コンピュータシステムは、要求されたコンテンツを供給するハンドラにその要求をマッピングする。
コンピュータシステムは、ハンドラに対するバッファリング動作データにアクセスする。コンピュータシステムは、要求されたコンテンツが、少なくともバッファリング動作データに基づいて変更された応答バッファリング動作に従って転送されるべきであるということを判断する。変更された応答バッファリング動作は、デフォルトの応答バッファリングに対する例外として、要求されたコンテンツに対応する。コンピュータシステムは、ハンドラからの要求されたコンテンツの一部にアクセスする。コンピュータシステムは、変更された応答バッファリング動作に従って、要求されたコンテンツの一部をクライアントに転送する。
この概要は、簡易化した形式でいくつかの概念を説明し、当該概念の詳細は実施の形態で詳しく説明する。この概要は、請求された発明の重要な特徴または本質的特徴を識別することを意図していないし、請求された発明の範囲を決定する際の補助として用いられることを意図していない。
本発明の更なる特徴及び利点は、以下に続く詳細な説明に説明されていて、一部は該説明から明らかにされ、または、本発明の実施により理解され得る。本発明の特徴及び利点は、添付の請求項において特に指摘された機器及び組み合わせによって実現しかつ得ることができる。以下に記載されるように、本発明のこれらの特徴及び他の特徴は、以下の説明及び添付の請求の範囲から更に十分に明らかになり、または以下に説明される本発明の実施により理解することができる。
本発明の上記した利点及び特徴並びにその他の利点及び特徴を得ることができる方法を説明するために、上記に簡潔に説明した本発明のより細かい説明が、添付の図面に示された本発明の特定の実施形態を参照して提供される。これらの図面は、本発明の典型的な実施形態だけを示し、従って、その範囲を限定していると考えられるべきでなく、本発明は、追加的な詳細部分及び添付の図面を用いて記述されかつ説明されている。
本発明は、ネットワーク応答バッファリング動作を管理する方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、クライアントからコンテンツ要求を受信する。コンピュータシステムは、コンテンツを転送するときに用いるデフォルトの応答バッファリング動作を有する。コンピュータシステムは、要求されたコンテンツを供給するハンドラにその要求をマッピングする。
コンピュータシステムは、ハンドラに対するバッファリング動作データにアクセスする。コンピュータシステムは、要求されたコンテンツが、少なくともバッファリング動作データに基づいて変更された応答バッファリング動作に従って転送されるべきであるということを判断する。変更された応答バッファリング動作は、デフォルトの応答バッファリングに対する例外として、要求されたコンテンツに対応する。コンピュータシステムは、ハンドラからの要求されたコンテンツの一部にアクセスする。コンピュータシステムは、変更された応答バッファリング動作に従って、要求されたコンテンツの一部をクライアントに転送する。
本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを含んでいてもよい。本発明の範囲に含まれる実施形態は、また、記憶されたコンピュータ実行可能命令またはデータ構造を伝えるかまたは有しているコンピュータ可読媒体を含む。かかるコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータがアクセスすることができる任意の利用可能媒体であってもよい。一例であってこの例に限らないが、コンピュータ可読媒体は、コンピュータ可読の記憶媒体を含んでいてもよい。コンピュータ可読の記憶媒体は、例えば、RAM、ROM、EEPROM、CD−ROMもしくはその他の光学的ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、コンピュータ実行可能命令もしくはデータ構造の形式で所望のプログラムコード手段を記憶するために用いることができかつ汎用コンピュータまたは専用コンピュータがアクセスすることができる任意の他の媒体などである。
本明細書及び特許請求の範囲において、「ネットワーク」は、コンピュータシステム及び/またはモジュールの間の電子データの移送を可能にする1つ以上のデータリンクとして定義される。情報がネットワークまたは別の通信接続(配線接続、無線、または、配線接続もしくは無線の組み合わせ、のいずれか)を介してコンピュータへ転送されるかまたは提供されると、コンピュータは、コンピュータ可読媒体として接続を正しく見なす。よって、一例であってこの例に限らないが、コンピュータ可読媒体は、コンピュータ実行可能命令の形式の所望のプログラムコード手段またはデータ構造を伝えるかまたは記憶するために用いることができかつ汎用コンピュータまたは専用コンピュータがアクセスすることができるネットワークまたはデータリンクを含んでいてもよい。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能群を実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、二進数、アセンブリ言語などの中間フォーマット命令、またはソースコードであってもよい。本発明は構造上の特徴及び/または方法論的動作に特有の言語で説明されているが、添付の特許請求の範囲において画定される本発明は、開示される特徴または上記の動作に必ずしも限定されるわけではないということが理解されるべきである。むしろ、開示される特徴及び動作は、特許請求の範囲を実施する実施例の形式として開示される。
当業者は、本発明が、コンピュータシステム構成の多くのタイプを有するネットワークコンピュータ環境で実施されてもよいということを認めるだろう。コンピュータシステム構成には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、携帯用デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家電またはプログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、などを含む。本発明は、また、ネットワークを介して(配線接続されたデータリンク、無線データリンク、または、配線接続されたデータリンク及び無線データリンクの組合せによって)リンクされた、ローカルコンピュータシステム及びリモートコンピュータシステムのいずれもがタスクを実行する分散システム環境において実施されてもよい。分散システム環境では、プログラムモジュールは、ローカルの記憶装置及びリモートの記憶装置の両方に設けてもよい。
図1は、ネットワーク応答バッファリング動作の管理を容易にするコンピュータアーキテクチャ100の例を示す。コンピュータアーキテクチャ100は、コンピュータシステム101及びコンピュータシステム111を含む。コンピュータシステム101及びコンピュータシステム111の各々は、ネットワーク191に接続されている。ネットワーク191は、例えば、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、またはインターネットなどの任意のタイプのネットワークであってもよい。よって、コンピュータシステム101及びコンピュータシステム111の様々なコンポーネントは、互いにもネットワーク191に接続された他のコンポーネントにも、データを送受信することができる。従って、コンポーネントは、メッセージ関連データを生成して、ネットワーク119を介してメッセージ関連データ(例えば、インターネットプロトコル(「IP」)データグラム及び、伝送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)などのIPデータグラムを利用する他の上位層プロトコル)を交換することができる。
通常、コンピュータシステム101は、コンテンツを要求し、受信し、提示する。例えば、コンテンツブラウザ102(例えば、ウェブブラウザ)は、コンテンツID(例えば、「URL」(Uniform Resource Locator))及び返信用電子アドレスを含むコンテンツ要求をネットワーク191上へ送信することができる。ネットワーク191のコンポーネント(例えば、ルータ)は、コンテンツIDで識別されるサーバコンピュータシステム(例えば、ウェブサーバを含む)に、要求を送ることができる。コンピュータシステム101は、(例えば、返信用電子アドレスに送信された)サーバコンピュータシステムからの応答で要求したコンテンツを受信することができる。コンピュータシステム101は、要求したコンテンツを処理することができ、コンテンツブラウザ102は、要求したコンテンツを提示することができる。
通常、コンピュータシステム111は、コンテンツ要求を受信し、要求を処理して要求されたコンテンツを識別し、受信した要求に対する応答で識別したコンテンツを返送する。例えば、コンテンツサーバ113(例えば、ウェブサーバ)は、ネットワーク191からコンテンツID(例えば、「URL」(Uniform Resource Locator))及び返信用電子アドレスを含むコンテンツ要求を受信することができる。コンテンツサーバ113は、ディスパッチテーブル112を参照して、要求されたコンテンツを生成することができるコンテンツ供給アプリケーション114内のアプリケーションハンドラを識別することができる。コンテンツサーバ113は、内部コンテンツ要求(例えば、プログラム呼び出し)を識別したアプリケーションハンドラに送ることができる。
識別したアプリケーションハンドラは、内部コンテンツ要求に応じてコンテンツサーバ113へ要求されたコンテンツの少なくとも一部を返送することができる。コンテンツタイプ(例えば、「HTML」(ハイパーテキストマークアップ言語)文書、画像データ、音声データ、映像データ等)により、アプリケーションハンドラは、要求されたコンテンツを異なった形で返すことができる。例えば、HTML文書を返送する場合、ハンドラは、完全なHTML文書を単一のコンテンツ部分として返送することができる。一方、映像データについては、ハンドラは、映像データの一部が生成されると該映像データの一部を返送することができる。
コンピュータシステム111はまた、バッファ116を含む。様々な入力に応じて、コンテンツサーバ113は、要求されたコンテンツを含む応答を送信する前に、要求されたコンテンツをバッファ116内にバッファリングすることもしないこともできる。一部の入力は、例えば応答サイズ及びハンドラのコンテンツ生成速度などのランタイム情報であってもよい。他の入力は、例えばデフォルトのバッファリング動作及びハンドラ特有のバッファリング動作データなどの規則であってもよい。ハンドラ特有のバッファリング動作データは、例えばランタイム情報などの他の入力に基づいて生じることになっている応答バッファリング動作を示す。
要求されたコンテンツがバッファリングされない場合、コンテンツサーバ113は、コンテンツを要求したコンピュータシステムに、要求されたコンテンツを含む応答を(例えば、返信用電子アドレスを用いて)送信することができる。要求されたコンテンツがバッファ116にバッファリングされる場合、後処理パイプライン115の処理コンポーネントは、要求されたコンテンツを処理すること(例えば、暗号化すること、フィルタリングすること、バッファリングすること、キャッシュに格納することなど)ができる。処理が完了すると、コンテンツサーバ113は、バッファ116からバッファリングされたかつ/または処理されたコンテンツを取り出すことができる。コンテンツサーバ113は、バッファリングされたかつ/または処理されたコンテンツを含む応答を(例えば、返信用電子アドレスを用いて)コンテンツを要求したコンピュータシステムに送信することができる。ウェブブラウザ102は、あらゆるバッファリングされたコンテンツ及び/またバッファリングされなかったコンテンツを受信して表示することができる。
図2は、ネットワークバッファ応答動作を管理する方法200の例のフローチャートを示す。方法200は、コンピュータアーキテクチャ100で示したコンポーネント及びデータに関して説明される。
方法200は、クライアントからのコンテンツ要求を受信する動作を含む(動作201)。例えば、コンテンツサーバ113は、コンテンツID131(例えば、URL)を含む要求181をコンテンツブラウザ102から受信することができる。コンテンツブラウザ102は、コンピュータシステム101の電子アドレスも含むことができる要求181を送信して、コンテンツブラウザ102で表示するコンテンツを要求することができる。
コンテンツサーバ113は、コンテンツを転送するときに用いるデフォルトのバッファリング動作を有することができる。例えば、コンテンツサーバ113に対するデフォルト設定は、要求されたコンテンツを含む応答を送信する前に、バッファ116において要求されたコンテンツを完全にバッファリングすることになっていてもよい。よって、デフォルトで、完全な応答は後処理のために、処理コンポーネント141、142等で利用可能にされてもよい。あるいは、コンテンツサーバ113に対するデフォルト設定は、要求されたコンテンツを含む応答を送信する前に、コンテンツの特定の量(たとえ特定の量が要求されたコンテンツの全部に満たない場合であっても)をバッファリングすることになっていてもよい。例えば、当該特定の量は、ネットワーク191で用いられるパケットサイズに設定されていてもよい。一方、コンテンツサーバ113はまた、要求されたコンテンツをバッファリングすることなしに要求されたコンテンツを送信するようにデフォルトで設定されていてもよい。
コンテンツサーバ113は、コンテンツのタイプに基づいてデフォルト動作を変化させることができる。例えば、HTML文書に対するデフォルト動作は、完全なバッファリングであってもよい。一方、音声データに対するデフォルト動作は、バッファリングがなくてもよい。画像データは、ネットワーク191のパケットサイズまでの部分的なバッファリングしてもよい。しかしながら、コンテンツタイプに基づく上述のデフォルトのバッファリング動作は、単に例であって、これらのコンテンツタイプ及び他のコンテンツタイプに対するその他のデフォルトのバッファリング動作があり得るということが理解されなければならない。
コンテンツサーバ113は、(アプリケーションが同じタイプのコンテンツまたは異なるタイプのコンテンツを生成してもしなくても)アプリケーションに基づいてデフォルト動作を変化させることができる。いくつかの実施形態では、異なったアプリケーションハンドラは、同じコンテンツタイプを生成する。例えば、ハンドラ124は、(例えば、PHPスクリプトコードを実行することによって)HTML文書を生成するハイパーテキストプロセッサ(「PHP」)であってもよい。同様に、ハンドラ134は、HTML文書を(例えば、VBスクリプトまたはJscriptコードを実行することによって)生成するアクティブサーバページ(「ASP」)ハンドラであってもよい。別のハンドラは、(例えば、「CFML」(コールドフュージョンマークアップ言語)で書かれた実行タグを処理することにより)HTML文書を生成するコールドフュージョンハンドラであってもよい。
ハンドラ124によって生成されるHTMLに対するデフォルトのバッファリング動作は、ハンドラ134及びHTMLを生成する他のハンドラにより生成されるHTMLに対するデフォルト動作と異なっていてもよい。例えば、ハンドラ124によって生成されるHTML文書に対するデフォルト動作は、完全なバッファリングを含むことができる。一方、ハンドラ134によって生成されるHTML文書は、特定のサイズまでのバッファリングを含むことができる。
他の実施形態では、異なったアプリケーションハンドラは、異なったコンテンツタイプを生成する。これらのアプリケーションハンドラに対するデフォルトのバッファリング動作も変化し得る。しかしながら、アプリケーションに基づく上述のバッファリング動作は、単に例であって、これらのアプリケーション及び他のアプリケーションに対するその他のデフォルトのバッファリング動作があり得るということが理解されなければならない。
方法200は、要求されたコンテンツを供給するハンドラに要求をマッピングする動作を含む(動作202)。例えば、要求181の受信に応じて、コンテンツサーバ113は、ハンドラ134に要求181をマッピングすることができる。図示したように、ディスパッチテーブル112は、コンテンツID、ハンドラID、及び動作データを含む1つ以上のデータ入力(エントリー)を有することができる。ハンドラIDは、対応するコンテンツIDにより要求されたコンテンツを生成するコンピュータシステム111におけるハンドラの識別を示す。動作データは、識別されたハンドラにおいて生成されるコンテンツに付随するべき(デフォルトの応答バッファリング動作を潜在的に変更する)応答バッファリング動作を示す。
要求をマッピングするために、コンテンツサーバ113は、ディスパッチテーブル112を参照して、受信したコンテンツIDに対応するハンドラIDを識別することができる。例えば、コンテンツサーバ113は、ディスパッチテーブル112を参照して、データ入力138がコンテンツID131に対応するということを判断することができる。データ入力138内で、ハンドラID132は、ハンドラ134へのポインタであり得る。動作データ133は、ハンドラ134で生成されるコンテンツに付随すべき(デフォルトの応答バッファリング動作を潜在的に変更する)応答バッファリング動作を示す。
データ入力128は、コンテンツID121、ハンドラID122、及び動作データ123を含む。よって、適切な場合、コンテンツサーバ113は、ディスパッチテーブル112を参照して、データ入力128がコンテンツID121に対応するということを判断することができる。データ入力128内で、ハンドラID122は、ハンドラ124へのポインタであり得る。動作データ123は、ハンドラ124において生成されるコンテンツに付随すべき(デフォルトの応答バッファリング動作を潜在的に変更する)応答バッファリング動作を示す。
方法200は、ハンドラに対するバッファ動作にアクセスする動作を含む(動作203)。例えば、コンテンツサーバ113は、ハンドラ134に対する動作データ133にアクセスすることができる。動作データ133は、デフォルトの応答バッファリング動作に従ってハンドラ134において生成されるコンテンツをハンドラ134がバッファリングすることになっているということを示すことができる。例えば、デフォルトの応答バッファリング動作が要求されたコンテンツを完全にバッファリングすることになっている場合、動作データは、デフォルトの応答バッファリング動作の順守を示す値を含むことができる。一方、動作データ133は、デフォルトの応答バッファリング動作と異なった応答バッファリング動作に従ってハンドラ134において生成されるコンテンツをハンドラ134がバッファリングすることになっているということを示すことができる。例えば、デフォルトの応答バッファリング動作が要求されたコンテンツを完全にバッファリングすることになっている場合、動作データは、ハンドラ134において生成されるコンテンツは全くバッファリングされることになっていないということを示す値(例えば、ゼロ)を含むことができる。
通常、動作データは、例えば、コンテンツタイプ、アプリケーション、応答サイズ、ハンドラのコンテンツ生成速度等に基づいて応答バッファリング動作が管理されるべき方法を示すいかなるデータも含むことができる。
方法200は、要求されたコンテンツが少なくとも1つの応答バッファリング動作データに基づいて変更された応答バッファリング動作に従って転送されることになっているということを判断する動作を含む(動作204)。例えば、コンテンツサーバ113は、ハンドラ134で生成される要求されたコンテンツが動作データ133に従って転送されることになっているということを判断することができる。動作データ133は、ハンドラ134で生成される要求されたコンテンツが変更された応答バッファリング動作に従って転送されることになっているということを示すことができる。よって、動作データ133は、ハンドラ134からのコンテンツに対する応答バッファ動作がコンテンツサーバ113のデフォルトの応答バッファリング動作に対する例外であるということを示すことができる。
方法200は、要求されたコンテンツの一部にアクセスする動作を含む(動作205)。例えば、コンテンツサーバ113は、内部コンテンツ要求182(例えば、プログラム呼び出し)をハンドラ134に送信することができる。内部コンテンツ要求182の受信に応じて、ハンドラ134は、アプリケーション135を呼び出して、要求されたコンテンツを生成することができる。次に、アプリケーション135は、生成したどんなコンテンツもハンドラ134に渡すことができる。ハンドラ134は、コンテンツサーバ113にコンテンツ183を返送することができる。適切な場合、ハンドラ124は、同様にアプリケーション125を呼び出して要求されたコンテンツを生成することができ、さらにコンテンツサーバ113に要求されたコンテンツを返送することができる。
方法200は、変更された応答バッファ動作に従って、要求されたコンテンツの一部を転送する動作を含む(動作206)。例えば、コンテンツサーバ113は、動作データ133に示される変更された応答バッファ動作に従って、コンテンツ183を転送することができる。
よって、デフォルトの応答バッファ動作に応じて、コンテンツサーバ113は、コンテンツ183をバッファリングしてもよいししなくてもよい。デフォルトの応答バッファ動作がコンテンツ183に対する(少なくとも部分的な)バッファリングを示していたとしても、コンテンツ183はいかなるバッファリングもなしにコンテンツブラウザ102に送信されることになっているということを、変更された応答バッファ動作が示すかもしれない。よって、コンテンツサーバ113は、コンテンツ183をバッファリングすることなしにコンテンツ183を含む応答186をコンテンツブラウザ102に送信することができる。
一方、デフォルトの応答バッファ動作がコンテンツ183をバッファリングしないということを示しているにもかかわらず、コンテンツ183はバッファ116に(少なくとも部分的に)バッファリングされることになっているということを、変更された応答バッファ動作は示すかもしれない。よって、コンテンツサーバ113は、バッファ116にコンテンツ182をバッファリングする。一旦バッファリングされると、後処理パイプライン115の処理コンポーネント141、処理コンポーネント142、及び他の処理コンポーネントは、コンテンツ183にアクセスして処理することができる。いくつかの実施形態では、コンテンツはバッファ116にバッファリングされるが、いかなる後処理も受けない。
適切な場合、例えば、他のコンテンツとともにコンテンツ183が要求181への完全な応答を示す場合、バッファリングされた/処理されたコンテンツ184は、コンテンツサーバ113へ返送され得る。それに応じて、コンテンツサーバ113は、バッファされた/処理されたコンテンツ184を含む応答187をコンテンツブラウザ102へ送信することができる。
図3は、ネットワーク応答バッファリング動作の管理を容易にするコンピュータアーキテクチャ300の例を示す。コンピュータアーキテクチャ300は、コンピュータシステム301及びコンピュータシステム311を含む。コンピュータシステム301及びコンピュータシステム311の各々は、ネットワーク391に接続している。従って、コンポーネントは、メッセージ関連データを生成し、ネットワーク391を介してメッセージ関連データ(例えば、インターネットプロトコル(「IP」)データグラム及び、伝送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)などのIPデータグラムを利用する他の上位層プロトコル)を交換することができる。
通常、コンピュータシステム301は、ウェブベースのコンテンツを要求して、受信して、提示する。例えば、ウェブブラウザ302は、ネットワーク391上にURL及び返信用電子アドレス(例えば、IPアドレス)を含むコンテンツ要求を送信することができる。ネットワーク391のコンポーネント(例えば、ルータ)は、コンテンツIDで識別されるウェブサーバに要求を送ることができる。コンピュータシステム301は、(例えば、返信用IPアドレスを送信した)ウェブサーバからの応答で要求したコンテンツを受信することができる。コンピュータシステム301は、要求したコンテンツを処理することができ、ウェブブラウザ302は要求したコンテンツを提示することができる。
通常、コンピュータシステム311は、ウェブベースのコンテンツに対する要求を受信し、要求を処理して要求されたウェブベースのコンテンツを識別し、さらに、受信した要求に応じて識別したウェブベースのコンテンツを返送する。例えば、ウェブサーバ313は、URL331を含む要求381をウェブブラウザ302から受信することができる。要求381はまた、ウェブブラウザ302への返信用IPアドレスを含むことができる。コンテンツサーバ313は、ディスパッチテーブル312を参照して、要求381で要求されたコンテンツを生成することができるコンテンツ供給アプリケーション314のアプリケーションハンドラを識別することができる。例えば、ウェブサーバ313は、URL331に対応しているようなデータ入力(エントリー)338を識別することができる。データ入力338から、ウェブサーバ313は、ハンドラID322が、要求されたコンテンツを生成することができるハンドラ324へのポインタであるということを判断することができる。
コンピュータシステム311はまた、バッファ316を含む。ウェブサーバ313は、応答帯域幅を最適化してコンテンツの後処理機能(feature)を可能にするために、バッファ316内の全てのアプリケーションからの全てのコンテンツタイプをバッファリングするデフォルトの応答バッファ動作で構成され得る。しかしながら、様々な入力(例えば、応答サイズ、ハンドラのコンテンツ生成速度、ハンドラ特有のバッファリング動作データ等)に応じて、ウェブサーバ313は、要求されたコンテンツを含む応答を送信する前に、要求されたコンテンツをバッファ316にバッファリングすることもしないこともできる。
要求381の受信及びハンドラID322の識別に応じて、ウェブサーバ313は、(ハンドラ324に対する)バッファ動作データ333にアクセスすることができる。バッファ動作データの単位(granularity)は、ハンドラのマッピングであってもよい。応答バッファリング動作を特定した特定のアプリケーション/コンテンツタイプにハンドラのマッピングが対応するので、その単位は構成及び管理を容易にすることができる。更に、URL単位毎に応答バッファリング動作がサポートされるように、ハンドラのマッピングをURL毎に画定してもよい。
例えば、データ入力328及びデータ入力338は、URL321及びURL331とそれぞれ対応する。しかしながら、URL321及びURL331はどちらもハンドラID322に対応する。よって、URL321及びURL331に対するコンテンツは、ハンドラ324で生成される。それにもかかわらず、URL321に対して生成されたコンテンツ及びURL331に対して生成されたコンテンツは、異なった応答バッファリング動作を有するように示されている。URL321に対するコンテンツは動作データ323に対応し、URL321に対するコンテンツは動作データ333に対応する。従って、ハンドラ324で生成された異なるコンテンツ部分は、異なる応答バッファリング動作を有することができる。
例えば、ハンドラ324は画像データを生成することができる。URL321は、複数のより小なる画像に関連付けられているとすることができる。よって、動作データ323は、これらのより小なる画像に対して、デフォルトの応答バッファリング動作(バッファリングを完成する)を利用するべきであるということを示すことができる。URL321でコンテンツ要求が受信されると、ウェブサーバ313は動作データ323にアクセスすることができる。
一方、URL331は、1つの非常に大なる画像に関連付けられているとすることができる。よって、動作データ333は、このより大なる画像に対して、デフォルトの応答バッファリング動作(バッファリングを完成する)をオフ(例えば、バッファサイズ=0)にするべきであるということを示すことができる。URL331でコンテンツ要求が受信されると、ウェブサーバ313は、動作データ333にアクセスすることができる。
URL371でコンテンツ要求が受信されると、ウェブサーバ313はまた、動作データ373にアクセスして、ハンドラ374において生成されるコンテンツに対する応答バッファリング動作を識別することができる。
データ入力の動作データに基づいて、ウェブサーバ313は、要求されたコンテンツがデフォルトの応答バッファ動作に従ってまたはデフォルトの応答バッファ動作に対する例外を示している変更された応答バッファ動作に従って転送されるべきであるか否かを判断することができる。例えば、動作データ333に少なくとも部分的に基づいて、ウェブサーバ313は、コンテンツ形式のハンドラ324がバッファされるべきであるか(デフォルト)またはバッファされるべきでないか(変更された)を判断することができる。
いくつかの実施形態では、応答バッファリングをオフにするという要件は、ハード要件及びソフト要件と見なされ得る。ハード要件とは、ハンドラによって決定される要件である。例えば、ハンドラはデータをストリームしなければならないということを、ハンドラは(動作データを介して)示すことができる。ソフト要件は、様々な入力のバランスを取り、応答バッファリングをオフにすることが適当であるか否かを判断することができる。例えば、管理者は、コンテンツがストリームされることになっていようといまいと、最初のバイトに対する時間の厳格の要件、メモリ使用量、ネットワーク帯域幅使用量、後処理の必要性、応答サイズ、ハンドラの応答生成速度等のバランスをとっている応答バッファリングを潜在的にオフにするように動作データを構成することができる。
いくつかの実施形態では、応答に対する応答バッファリングを完全にオフにすることが適当であるかもしれない。例えば、相対的に大きな応答である場合(例えば、バッファ316の利用可能なメモリを超える)、コンピュータシステム311の性能に悪影響をもたらすかまたはメモリ内に記憶することが不可能であるかもしれない。よって、これらの実施形態では、ハンドラ及び/またはコンテンツタイプに対するバッファ動作データは、応答バッファリングがオフにされるべきであるということを示すことができる。
更に、コンテンツは、配信速度要件及び/または最初のバイトに対する時間の要件を有することができる。コンテンツをバッファリングすることは、配信速度要件及び最初のバイトに対する時間の要件に影響を及ぼすかもしれない。よって、これらの他の実施形態では、ハンドラ及び/またはコンテンツタイプに対するバッファ動作データは、応答バッファリングがオフにされるべきであるということを示すことができる。
更に、ハンドラは、それ自体のバッファリングを提供することができ、ウェブサーバ313がコンテンツを再びバッファリングすることを意図しない。二重にコンテンツをバッファリングすることは、資源の非効率的な使用となる。よって、これらの更なる実施形態では、ハンドラ及び/またはコンテンツタイプに対するバッファ動作データは、応答バッファリングがオフにされるべきであるということを示すことができる。
ウェブサーバ313は、ハンドラで生成されるコンテンツがバッファリングされるべきであるかまたはバッファリングされるべきでないかということを示す応答バッファリング閾値の使用をサポートする。管理者は、ハンドラに応答バッファ閾値を設定して、所望の応答バッファリング動作を実行することができる。応答バッファリング閾値は、どれくらいのデータがバッファリングされるべきであるかを示す数であってもよい。ゼロの応答バッファリング閾値は、応答バッファリングがオフにされているということを示すことができる。
生成されたコンテンツのサイズが対応するバッファリング閾値以下である場合、生成されたコンテンツをバッファリングすることができる。一方、生成されたコンテンツのサイズが対応するバッファリング閾値より大きい場合、生成されたコンテンツをバッファリングすることができない。いくつかの実施形態では、応答バッファリング閾値は、コンテンツをクライアントに送出する(flushing)前にバッファリングするべき特定のコンテンツ量を示す。コンテンツが利用可能なバッファより大きい場合、コンテンツ全体が送信されるまで、バッファを繰り返し満たして送出することができる。ウェブサーバ313は、各々のハンドラマッピングに対するバッファリング閾値を自動的に解明することができる。
ウェブサーバ313は、内部コンテンツ要求382をハンドラ324に送信して、ハンドラ324にURL331を介してアクセスされるコンテンツを生成するよう要求することができる。それに応じて、ハンドラ324は、ウェブコンテンツ383をウェブサーバ313に返送することができる。続いて、ハンドラ324はまた、ウェブコンテンツ384をウェブサーバ313に返送することができる。
バッファリングがオフの場合(例えば、動作データ333は、応答バッファ閾値=0を有する)、ウェブコンテンツ383及びウェブコンテンツ384は受信されたとたんにウェブブラウザ302に送信される。例えば、ウェブサーバ313は、ウェブコンテンツ383を含む応答386をウェブブラウザ302に送信することができる。続いて(ウェブコンテンツ384を受信した後に)、ウェブサーバ313は、ウェブコンテンツ384を含む応答396をウェブブラウザ302に送信することができる。
一方、バッファリングがオンの場合、ウェブサーバ313は、バッファ316内にウェブコンテンツ383をバッファリングすることができる。続いて(ウェブコンテンツ384を受信した後に)、ウェブサーバ313はまた、バッファ316内にウェブコンテンツ384をバッファリングすることができる。よって、ウェブコンテンツ383、384は、圧縮モジュール341、暗号化モジュール342、フィルタモジュール343、及びキャッシュモジュール344を含む後処理パイプライン315に利用可能になされる。従って、これらのモジュールのうちの1つまたは複数は、ウェブコンテンツ383/384を処理して、バッファリングされた処理されたウェブコンテンツ388をもたらすことができる。
処理が完了すると、ウェブサーバ313は、バッファリングされた及び/または処理されたウェブコンテンツ388をバッファ316から取り出すことができる。ウェブサーバ313は、バッファリングされた及び/または処理されたコンテンツ388を含む応答387を(例えば、返信用IPアドレスを用いて)ウェブブラウザ302へ送信することができる。しかしながら、いくつかの実施形態では、ウェブコンテンツ383及びウェブコンテンツ384は、いかなる後処理も受けることなしにバッファリングされる。ウェブブラウザ302は、あらゆるバッファリングされたかつ/またはバッファリングされていないウェブベースのコンテンツを受信して表示することができる。
いくつかの実施形態では、応答バッファリングAPIが、アプリケーションからの応答バッファリング動作を制御するために用いられる。例えば、図1では、アプリケーション125またはアプリケーション135は、応答バッファリングAPIを呼び出して、応答バッファリングAPI自体の応答バッファリング動作を制御することができる。同様に、図3では、アプリケーション326またはアプリケーション376は、応答バッファリングAPIを呼び出して、応答バッファリングAPI自体の応答バッファリング動作を制御することができる。
応答バッファリングAPIは、ハード応答バッファリング要件を制御しかつ/または実施するために用いられ得る。例えば、応答バッファリングAPIは、要求されたコンテンツを生成するアプリケーションにより用いられる任意の規則に基づいて、ストリーミング動作を実行するために用いられ得る。応答バッファリングAPIを用いて、ディスパッチテーブルに含まれるデフォルトの応答バッファ動作も変更された応答バッファ動作も無効にすることができる。
応答バッファリングAPIは、以下を含むことができる。即ち、
WriteResponse()‐クライアントにデータ送信するために用いられ、特定のハンドラに対する構成情報に基づいて応答バッファリングを内部で用いることができる。
Flush()‐クライアントへの応答バッファの送出を強制するために用いる。アプリケーションはこれを用いて、サーバのバッファリング動作を制御することができる。
DisableResponseBuffering()‐要求の残りの部分に対する応答バッファリングをオフにするために用いられる。
従って、本発明の実施形態は、コンテンツサーバに付随する異なるコンテンツタイプ及びアプリケーション部分に対する応答バッファリングを制御する能力を促進する。更に、実施形態は、例えば、応答サイズ及びハンドラの応答生成速度などのランタイム情報に関して応答バッファリング動作を画定するオプションを提供する。よって、例えば、コンテンツサーバは、通常、応答バッファリングを利用することができるが、さらに、ストリーミング動作を実現しかつ/または応答バッファによる大なるメモリ使用量を抑制することができる。
更に、アプリケーションに対する応答バッファリング動作を、管理者によって設定される構成設定を介して制御することができる。よって、アプリケーションコードは、コンテンツサーバの応答バッファの意味を認識する必要はない。あるいは、応答バッファリングAPIを介して、アプリケーションは、それ自体の応答バッファリング動作を制御することができる。
本発明は、その精神または本質的特徴から逸脱することなく、他の特定の形態で具体化されてもよい。説明された実施形態は、あらゆる点で単に例示的であって限定的でないとみなされるべきである。従って、本発明の範囲は、前述の説明よりはむしろ添付の請求の範囲により示される。請求の範囲と同等の意味及び範囲内にあるどんな変更も、請求の範囲内に包含されるべきである。
ネットワーク応答バッファリング動作の管理を容易にするコンピュータアーキテクチャ例を示す図である。 ネットワーク応答バッファリング動作を管理する方法の例についてのフローチャートである。 ネットワーク応答バッファリング動作の管理を容易にする別のコンピュータアーキテクチャ例を示す図である。

Claims (17)

  1. コンテンツを他のコンピュータへ返すコンテンツサーバを含み、コンテンツの要求に応答して他のコンピュータへ返されるコンテンツをバッファリングするように構成されたコンテンツバッファを含み、コンテンツバッファでのコンテンツのバッファリングを制御するために用いられるデフォルトのバッファリング動作を有するコンピュータシステムで、コンテンツの要求に応答してコンテンツに特有のバッファリング動作を適用するための方法であって、
    コンテンツサーバが、クライアントから、要求されているコンテンツを識別するコンテンツIDを含むコンテンツの要求を受信する動作と、
    コンテンツIDを、コンテンツIDに対応する要求されているコンテンツの少なくとも一部を生成するハンドラを識別するハンドラID、およびコンテンツIDに対応する生成されたコンテンツを返すときに用いられるバッファリング動作を示すバッファ動作データの部分にマッピングするディスパッチテーブルにアクセスする動作と、
    前記ディスパッチテーブルを参照して、前記要求に含まれた前記コンテンツIDを、対応する要求されているコンテンツを供給するように構成された対応するハンドラのハンドラID、および前記コンテンツIDについての前記ハンドラから返される要求されているコンテンツのいずれかのために使用される特有のバッファリング動作を示すバッファ動作データの対応する部分にマッピングする動作であって、前記特有のバッファリング動作が、前記デフォルトのバッファリング動作と異なり、前記ディスパッチテーブル中のバッファ動作データの他の部分の少なくとも1つと異なる、動作と、
    前記ハンドラからの前記要求されているコンテンツの部分にアクセスする動作と、
    前記コンテンツIDがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作と、
    前記コンテンツIDがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、前記クライアントへ、前記要求されているコンテンツの部分を転送する動作と
    を含むことを特徴とする方法。
  2. 前記コンテンツの要求を受信する動作は、URLを受信する動作を含むことを特徴とする請求項1記載の方法。
  3. 前記コンテンツの要求を受信する動作は、ウェブサーバがコンテンツの要求を受信する動作を含むことを特徴とする請求項1記載の方法。
  4. 前記コンテンツIDを対応するハンドラIDにマッピングする動作は、URLを対応するハンドラIDにマッピングする動作を含むことを特徴とする請求項1記載の方法。
  5. 前記特有のバッファリング動作は、前記ハンドラからのコンテンツが前記コンテンツバッファをバイパスすることを示すバッファリング動作であることを特徴とする請求項1記載の方法。
  6. 前記コンテンツIDをバッファ動作データの部分にマッピングする動作は、前記ハンドラに対応するアプリケーションから応答バッファAPI呼び出しを受信する動作を含むことを特徴とする請求項1記載の方法。
  7. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、たとえ前記デフォルトのバッファリング動作が要求されているコンテンツをバッファリングすることになっていても、前記要求されているコンテンツが前記コンテンツバッファの利用可能メモリより大きいのでバッファリングをバイパスする動作を含むことを特徴とする請求項1記載の方法。
  8. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、要求されているコンテンツが最初のバイトに対する時間の要件及び転送速度要件のうちの少なくとも1つを有しているということを判断する動作を含むことを特徴とする請求項1記載の方法。
  9. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、前記ハンドラがそれ自体のバッファリングを提供するということを判断する動作を含むことを特徴とする請求項1記載の方法。
  10. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、たとえ前記デフォルトのバッファリング動作が要求されたコンテンツをバッファリングするべきではないということを示している場合であっても、前記要求されているコンテンツの部分をバッファリングする動作を含むことを特徴とする請求項1記載の方法。
  11. 前記クライアントへ前記要求されているコンテンツの部分を転送する動作は、前記コンテンツサーバが前記要求されているコンテンツの部分を前記クライアントへ直接送信する動作を含むことを特徴とする請求項1記載の方法。
  12. 前記要求されているコンテンツの部分に対する後処理を実行する動作をさらに含み、前記後処理は、前記コンテンツの部分を圧縮すること、前記コンテンツの部分を暗号化すること、前記コンテンツの部分をフィルタリングすること、前記コンテンツの部分をキャッシュに格納することの中から選択されることを特徴とする請求項1記載の方法。
  13. 前記コンテンツサーバが前記コンテンツバッファから前記処理された前記要求されているコンテンツの部分を取り出す動作と、
    前記コンテンツサーバが前記処理された前記要求されているコンテンツの部分を前記クライアントへ送信する動作と
    を更に含むことを特徴とする請求項12記載の方法。
  14. コンテンツを他のコンピュータシステムへ返すウェブサーバを含み、コンテンツの要求に応答して他のコンピュータシステムへ返されるコンテンツをバッファリングするように構成されたコンテンツバッファを含み、コンテンツバッファでのコンテンツのバッファリングを制御するために用いられるデフォルトのバッファリング動作を有するコンピュータシステムで、ウェブベースコンテンツの要求に応答してコンテンツに特有のバッファリング動作を適用するための方法であって、
    ウェブサーバが、クライアントから、URLを受信する動作と、
    前記URLを、前記URLに対応する要求されているコンテンツの少なくとも一部を生成するハンドラを識別するハンドラID、および前記URLに対応する生成されたコンテンツを返すときに用いられるバッファリング動作を示すバッファ動作データの部分にマッピングするディスパッチテーブルにアクセスする動作と、
    前記ディスパッチテーブルを参照して、前記URLを、前記URLに示されているウェブサーバのネームスペースの部分についての要求されているウェブベースコンテンツを供給するように構成された対応するハンドラ、および前記URLについての前記ハンドラから返される要求されているコンテンツのいずれかのために使用される特有のバッファリング動作を示すバッファ動作データの対応する部分にマッピングする動作であって、前記特有のバッファリング動作が、前記デフォルトのバッファリング動作と異なり、他のURLについて示されるバッファリング動作であってハンドラがマップされたバッファリング動作の少なくとも1つと異なる、動作と、
    前記ハンドラからの前記要求されているウェブベースコンテンツの部分にアクセスする動作と、
    前記URLがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作と、
    前記URLがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、前記クライアントへ、前記要求されているウェブベースコンテンツの部分を転送する動作と
    を含むことを特徴とする方法。
  15. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、ハンドラに示されたバッファリング動作に従って前記要求されているウェブベースコンテンツを転送するべきであるということを判断する動作を含むことを特徴とする請求項14記載の方法。
  16. 前記バッファ動作データの部分に示された前記特有のバッファリング動作に従って前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングする動作は、前記要求されているウェブベースコンテンツのコンテンツタイプに基づいたバッファリング動作に従って前記要求されているウェブベースコンテンツが転送されるべきであるということを判断する動作を含むことを特徴とする請求項14記載の方法。
  17. コンピュータシステムであって、
    1つまたは複数のプロセッサと、
    システムメモリと、
    コンテンツの要求に応答して他のコンピュータへ返されるコンテンツをバッファリングするように構成されたコンテンツバッファと、
    コンテンツを他のコンピュータシステムへ返すように構成されたコンテンツサーバを表すプログラムを記憶した1つまたは複数のコンピュータ可読記憶媒体と、
    を含み、
    前記コンテンツサーバは、
    コンテンツを転送するときのデフォルトのバッファリング動作を有し、
    クライアントから、要求されているコンテンツを識別するコンテンツIDを含むコンテンツの要求を受信し、
    コンテンツIDを、コンテンツIDに対応する要求されているコンテンツの少なくとも一部を生成するハンドラを識別するハンドラID、およびコンテンツIDに対応する生成されたコンテンツを返すときに用いられるバッファリング動作を示すバッファ動作データの部分にマッピングするディスパッチテーブルにアクセスし、
    前記ディスパッチテーブルを参照して、前記要求を、要求されているコンテンツを供給するように構成されたハンドラの対応するハンドラID、および前記コンテンツIDについての前記ハンドラから返される要求されているコンテンツのいずれかのために使用される特有のバッファリング動作を示すバッファ動作データの対応する部分にマッピングし、前記特有のバッファリング動作が、前記デフォルトのバッファリング動作と異なり、前記ディスパッチテーブル中のバッファ動作データの他の部分の少なくとも1つと異なり、 前記ハンドラからの前記要求されているウェブベースコンテンツの部分にアクセスし、
    前記コンテンツIDがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、前記コンテンツバッファで前記要求されているコンテンツの部分をバッファリングし、
    前記コンテンツIDがマップされたバッファ動作データの部分に示された前記特有のバッファリング動作に従って、クライアントへ、要求されているコンテンツの部分を転送する
    ように構成されることを特徴とするコンピュータシステム。
JP2009505365A 2006-04-14 2007-03-08 ネットワーク応答バッファリング動作の管理 Expired - Fee Related JP4554723B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/404,412 US7636769B2 (en) 2006-04-14 2006-04-14 Managing network response buffering behavior
PCT/US2007/006024 WO2007120411A1 (en) 2006-04-14 2007-03-08 Managing network response buffering behavior

Publications (3)

Publication Number Publication Date
JP2009533757A JP2009533757A (ja) 2009-09-17
JP2009533757A5 JP2009533757A5 (ja) 2010-04-22
JP4554723B2 true JP4554723B2 (ja) 2010-09-29

Family

ID=38606123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009505365A Expired - Fee Related JP4554723B2 (ja) 2006-04-14 2007-03-08 ネットワーク応答バッファリング動作の管理

Country Status (6)

Country Link
US (1) US7636769B2 (ja)
EP (1) EP2011029B1 (ja)
JP (1) JP4554723B2 (ja)
KR (1) KR20090009804A (ja)
CN (1) CN101421719B (ja)
WO (1) WO2007120411A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306344A1 (en) * 2009-04-06 2010-12-02 Nokia Corporation Methods and Systems for Using Multipart Messaging with Preset Constraints
US8528002B2 (en) * 2009-05-11 2013-09-03 International Business Machines Corporation Providing access control for a destination in a messaging system
US20110060812A1 (en) * 2009-09-10 2011-03-10 Level 3 Communications, Llc Cache server with extensible programming framework
US9058252B2 (en) 2010-03-24 2015-06-16 Microsoft Technology Licensing, Llc Request-based server health modeling
CN107426145A (zh) * 2011-01-25 2017-12-01 交互数字专利控股公司 用于基于内容标识来自动地发现和获取内容的方法和设备
KR101107732B1 (ko) * 2011-03-18 2012-01-25 홍경환 넝쿨작물의 성장 안내기
KR20160039922A (ko) * 2014-10-02 2016-04-12 삼성전자주식회사 영상처리장치 및 그 제어방법
CN107566206B (zh) 2017-08-04 2020-09-04 华为技术有限公司 一种流量测量方法、设备及系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08180006A (ja) * 1994-12-22 1996-07-12 Hitachi Ltd ネットワークインタフェースおよび計算機ネットワークシステム
US6411994B2 (en) * 1997-10-07 2002-06-25 Interval Research Corporation Interface system for providing content using context hotspots
US6836829B2 (en) * 1998-11-20 2004-12-28 Via Technologies, Inc. Peripheral device interface chip cache and data synchronization method
US6778499B1 (en) * 1999-06-18 2004-08-17 Nortel Networks Limited Method and apparatus for enabling the smooth transmission of bursty data in a wireless communications system
DE19928939A1 (de) 1999-06-24 2001-01-11 Giesecke & Devrient Gmbh Datenträger sowie Verfahren zur Datenübertragung und zur Speicherverwaltung
US6571332B1 (en) * 2000-04-11 2003-05-27 Advanced Micro Devices, Inc. Method and apparatus for combined transaction reordering and buffer management
US7222150B1 (en) * 2000-08-15 2007-05-22 Ikadega, Inc. Network server card and method for handling requests received via a network interface
US6766376B2 (en) * 2000-09-12 2004-07-20 Sn Acquisition, L.L.C Streaming media buffering system
US20020075875A1 (en) * 2000-09-22 2002-06-20 Narad Networks, Inc. Broadband system with transmission scheduling and flow control
WO2002045369A1 (en) * 2000-11-29 2002-06-06 Pulsent Corporation Method and apparatus for a hybrid communication network
KR20020043972A (ko) 2000-12-05 2002-06-12 오명철 네트워크 상의 컨텐츠 변환 전송 집중화 시스템 및 그제어방법
US20020089941A1 (en) * 2001-01-05 2002-07-11 Chien-Meen Hwang Network receiver utilizing sample management buffers
KR100369900B1 (ko) 2001-03-27 2003-02-05 주식회사 비즈모델라인 씨디엔을 이용한 웹하드 운영 및 관리 방법
US7155727B2 (en) * 2001-06-19 2006-12-26 Sun Microsystems, Inc. Efficient data buffering in a multithreaded environment
US6986018B2 (en) * 2001-06-26 2006-01-10 Microsoft Corporation Method and apparatus for selecting cache and proxy policy
KR100812211B1 (ko) 2001-10-06 2008-03-13 주식회사 비즈모델라인 스트리밍을 이용한 애플리케이션 제공 시스템 및 방법
KR100450675B1 (ko) * 2002-03-19 2004-10-01 삼성전자주식회사 성능향상 및 전력소모를 감소시킬 수 있는 tlb
ITTO20020341A1 (it) * 2002-04-19 2003-10-20 Telecom Italia Lab Spa Procedimento per realizzare l'interlavoro fra reti del tipo content delivery network -cdn-,relativo insieme di reti e componente di interfac
US6735647B2 (en) * 2002-09-05 2004-05-11 International Business Machines Corporation Data reordering mechanism for high performance networks
JP4291664B2 (ja) * 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
KR20050040968A (ko) * 2003-10-29 2005-05-04 삼성전자주식회사 인터렉티브 정보저장매체의 재생을 위한 버퍼 메모리 관리장치, 관리 방법 및 그 정보저장매체
KR100803683B1 (ko) * 2004-03-04 2008-02-20 인터디지탈 테크날러지 코포레이션 이동성이 가능한 시스템 구조의 소프트웨어 아키텍쳐 및응용 프로그래밍 인터페이스
US7421700B2 (en) * 2004-03-15 2008-09-02 Microsoft Corporation Interprocess buffer management using a buffer delay time
JP4208079B2 (ja) * 2004-05-14 2009-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースサーバ、プログラム、記録媒体、及び制御方法
JP2005333434A (ja) * 2004-05-20 2005-12-02 Matsushita Electric Ind Co Ltd 無線モジュール
US20060020721A1 (en) 2004-05-26 2006-01-26 Microchip Technology Incorporated Configurable ping-pong buffers for USB buffer descriptor tables

Also Published As

Publication number Publication date
JP2009533757A (ja) 2009-09-17
CN101421719A (zh) 2009-04-29
EP2011029B1 (en) 2019-05-01
EP2011029A1 (en) 2009-01-07
KR20090009804A (ko) 2009-01-23
WO2007120411A1 (en) 2007-10-25
EP2011029A4 (en) 2016-04-27
US20070244993A1 (en) 2007-10-18
CN101421719B (zh) 2011-07-06
US7636769B2 (en) 2009-12-22

Similar Documents

Publication Publication Date Title
US10798203B2 (en) Method and apparatus for reducing network resource transmission size using delta compression
JP4554723B2 (ja) ネットワーク応答バッファリング動作の管理
US20190098109A1 (en) Processing dns queries to identify pre-processing information
US9032096B2 (en) Reducing the impact of network latency on application performance
US7908317B2 (en) System and method for URL compression
US6101328A (en) System for preventing multiple instances of the same dynamic executable module
US20180375952A1 (en) Method and apparatus for reducing network resource transmission size using delta compression
US11064043B2 (en) System and method for providing an adjunct device in a content distribution network
US20030145230A1 (en) System for exchanging data utilizing remote direct memory access
CA2956805C (en) Web redirection for caching
US8621092B2 (en) Remote portlet consumer with enhanced resource URL processing
JP2009530736A (ja) 初期動的レンダリング制御データの推定
JP5988402B2 (ja) Webコンテンツ先読み制御装置、Webコンテンツ先読み制御プログラム、及びWebコンテンツ先読み制御方法
US6934761B1 (en) User level web server cache control of in-kernel http cache
KR100925644B1 (ko) 오브젝트 전송 시스템 및 그 제어방법
US7904574B1 (en) Managing locally stored web-based database data
Guthrie et al. Asp. net http runtime
Li et al. System Framework for Web Content Adaptation and Intermediary Services: Design and Implementation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100308

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100406

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100507

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100611

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: 20100709

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100714

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees