(57)【要約】【課題】  ステートレスプロトコルを介したクライアントとサーバとの間の複数の通信セッションにわたる状態情報を管理すること。【解決手段】  サーバ（１０４）はキャッシュ不能な埋込みコンテンツへのハイパーリンクを備えたキャッシュ可能ウェブページをクライアント（１０２）に送る。サーバ（１０４）はキャッシュ不能埋込みコンテンツへのハイパーリンク内に、ユーザに一意に関連付けられたトークンまたは識別子を付加する。ユーザがキャッシュされたウェブページからハイパーリンクを介し埋込みコンテンツを入手すると、この識別子もユーザに送られる。サーバ（１０４）はクライアント（１０２）から識別子を受け取ると、記憶された状態情報にアクセスする。このようにしてクライアントが一意の識別子を使用してウェブページをキャッシュする限り、サーバはクッキーを使用せずに複数の通信セッションにわたりクライアントに関する状態情報を管理する。【選択図】  図１
2004280828.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとサーバの間の複数の通信セッションにわたる状態情報を管理する方法であって、前記クライアントおよびサーバがデータ通信ネットワークに接続され、前記クライアントが第１の記憶領域にストアされた情報からウェブコンテンツを入手し、前記情報が前記サーバにはアクセス不能であり、前記入手されたウェブコンテンツが第２の記憶領域にストアされた追加コンテンツへの参照を含み、前記参照が前記クライアントに固有のクライアント識別子を含む方法において、
前記サーバにおいて、前記クライアントから、前記第２の記憶領域にストアされた前記追加コンテンツを求める前記クライアント識別子を含む要求を受け取るステップと、
クライアント固有のものである前記追加コンテンツを生成するステップと、
受け取った前記クライアント識別子に応答してデータベースにアクセスし、前記状態情報を管理するステップと
を含むことを特徴とする方法。
【請求項２】
前記データベースにアクセスして前記状態情報を管理する前記ステップでは、受け取った前記クライアント識別子に応答して前記データベースにアクセスし、状態情報の追加または削除、または追加および削除を行うことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の記憶領域は、前記クライアントにはアクセス可能で前記サーバにはアクセス不能なブラウザキャッシュを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第２の記憶領域は、前記サーバにとってアクセス可能な記憶領域を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記第２の記憶領域にストアされた追加コンテンツへの前記参照は、前記データ通信ネットワーク上のロケーションへのハイパーリンクを含むことを特徴とする請求項１に記載の方法。
【請求項６】
受け取った前記要求に応答して、要求された前記追加コンテンツを前記クライアントに配信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
要求された前記追加コンテンツを配信する前記ステップでは、前記クライアントが前記追加コンテンツにアクセスするために使用するクライアントリダイレクトを生成することを特徴とする請求項６に記載の方法。
【請求項８】
前記クライアントリダイレクトはハイパーテキスト転送プロトコルのメタリフレッシュを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記第２の記憶領域にストアされた前記追加コンテンツは、画像ファイルと、音声ファイルと、スクリプトと、アプレットと、カスケードスタイルシートと、拡張可能マークアップ言語データアイランドと、テキストのうちの１つまたは複数を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２の記憶領域にストアされた前記追加コンテンツは、前記ウェブコンテンツに関連するフレームまたはインラインフレームとして参照されることを特徴とする請求項１に記載の方法。
【請求項１１】
前記第１の記憶領域内の前記ウェブコンテンツは、ハイパーテキストマークアップ言語であるＨＴＭＬドキュメントを含み、前記参照は前記データ通信ネットワーク上のロケーションへのハイパーリンクを含み、前記追加コンテンツは、前記ハイパーリンクを介して前記ＨＴＭＬドキュメント内から前記クライアントによってアクセス可能であることを特徴とする請求項１に記載の方法。
【請求項１２】
前記クライアントに固有のデータを前記データベースに記憶するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記サーバと前記クライアントは、要求−応答セマンティクスを有するステートレスプロトコルを介して通信することを特徴とする請求項１に記載の方法。
【請求項１４】
前記クライアントから前記ウェブコンテンツを求める要求を受け取るステップと、
受け取った前記要求に応答して、前記クライアント識別子を生成するステップと、
生成された前記クライアント識別子を前記ウェブコンテンツ内の前記参照に付加するステップであって、前記参照が前記第２の記憶領域にストアされた前記追加コンテンツへのリンクを提供するステップと、
追加された前記クライアント識別子を有する前記参照を備えた前記ウェブコンテンツを前記クライアントに配信するステップであって、前記クライアントが配信された前記ウェブコンテンツを受け取ると、前記ウェブコンテンツを前記サーバにはアクセス不能な前記第１の記憶領域にストアするステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記クライアントによる長期記憶のため付加された前記クライアント識別子を有する前記参照を備えた前記ウェブコンテンツを識別するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
１つまたは複数のコンピュータ可読媒体が、請求項１に記載の方法を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項１に記載の方法。
【請求項１７】
前記クライアントから、前記サーバにとってアクセス可能な前記ウェブコンテンツが変更されているか否かを判断する照会を受け取るステップと、
前記サーバにとってアクセス可能な前記ウェブコンテンツが変更されていないことを示す応答を前記クライアントに配信するステップであって、前記クライアントが前記ウェブコンテンツを前記第１の記憶領域から入手するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１８】
クライアント用にカスタマイズされたウェブコンテンツを表すデータ構造が記憶されたコンピュータ可読媒体であって、前記データ構造が前記クライアントとサーバの間の複数の通信セッションにわたる状態情報の管理に使用され、前記クライアントと前記サーバがデータ通信ネットワークに接続されたコンピュータ可読媒体において、前記データ構造は、
ウェブコンテンツをストアする第１のフィールドと、
追加コンテンツへの参照をストアする、前記第１のフィールド内の第２のフィールドであって、前記参照がクライアント識別子を含む第２のフィールドとを含み、
前記サーバは、前記サーバにはアクセス不能な情報として記憶領域に記憶するために前記データ構造を前記クライアントに送り、前記クライアントは、後で前記参照を介して前記サーバに対して前記追加コンテンツを要求し、前記サーバはクライアント固有の前記追加コンテンツを生成し、前記サーバは、追加コンテンツを求める前記要求で受け取った前記クライアント識別子に、前記クライアントに関する状態情報を関連付け、関連付けられた前記状態情報を記憶することを特徴とするコンピュータ可読媒体。
【請求項１９】
前記第１のフィールドは、ハイパーテキストマークアップ言語（ＨＴＭＬ）ドキュメントを含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
前記第２のフィールドは、前記データ通信ネットワーク上のロケーションへのハイパーリンクを含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２１】
前記第２のフィールドは、フレームと、インラインフレームと、画像ファイルと、音声ファイルと、スクリプトと、アプレットと、カスケードスタイルシートと、拡張可能マークアップ言語データアイランドと、テキストのうちの１つまたは複数への参照を記憶することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２２】
前記データ構造は、ハイパーテキストマークアップ言語（ＨＴＭＬ）ドキュメントとして表されることを特徴とする請求項１８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態管理の分野に関する。より詳細には、本発明は、キャッシュを使用して、ステートレスプロトコルによるクライアントとサーバとの間の複数の通信セッションにわたる状態情報（state information）を管理することに関する。
【背景技術】
【０００２】
ハイパーテキスト転送プロトコル（Hypertext transfer protocol：ＨＴＴＰ）は、サーバからクライアントにウェブページを送信する要求−応答セマンティクスを有するプロトコルである。ＨＴＴＰなどのある種の通信プロトコルは、要求−応答パターンが自己完結的であるという点で本質的にステートレス（stateless：状態がない）である。このような設計により、拡張が可能になるが、サーバがクライアントからの１つの要求を、同じクライアントからの将来の要求と関連付ける方法がないようなプロトコルを使用して、ステートフル（statefull）な対話を行うのは極めて困難である。さらに、電子商取引など、アプリケーションによっては状態管理が必要なものもある。例えば、残存する状態を使用して、アプリケーションはショッピングカートを維持したり、再来客を認識したり、ローカライズされたコンテンツを表示したりすることができる。状態管理により、アプリケーションは、ユーザが後でそのサイトを訪れたときにカスタマイズされた画面の様子が保たれているようにして、ユーザがウェブページの画面の様子をカスタマイズすることができるようにする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この問題に対する従来の解決策は、サーバによって生成され、クライアントに送られる状態情報を含むクッキーと呼ばれるデータブロックを、クライアントが記憶することである。クッキーは、Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ（ＩＥＴＦ）Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ（ＲＣＦ）２９６５として規格化された。現在、クッキーは、ウェブブラウザによって広くサポートされており、サーバがクライアントに関する任意の状態情報を記憶することができるようにする。しかし、クッキーは攻撃に対して脆弱であり、その結果、クッキーにストアされている情報が脅かされることが従来から証明されている。
【０００４】
状態管理の問題に対する他の従来の解決策として、（例えば照会文字列として）ウェブページへのアクセスに使用されるユニフォームリソースロケータ（uniform resource locator：ＵＲＬ）内に、圧縮された状態情報または圧縮されていない状態情報を埋め込むことがある。しかし、ＵＲＬ構文の性質上、ＵＲＬ内に埋め込むことができる状態情報の量と種類は限られている。さらに、埋め込まれた状態情報は通常、１回の通信セッションでしか使用することができない。他のセッションを生成すると、新しい埋込み状態情報が生成される。
【０００５】
同様に、従来のシステムとして、ＵＲＬまたは配信されるウェブページ内のハイパーリンクあるいはその両方に、セッションキーまたはその他の識別子を組み込むものもある。セッションキーはクライアントまたはサーバ上に記憶されている状態情報に対応する。このような従来のシステムは、記憶された状態情報をセッションキーを使用して取り出す。しかし、ＵＲＬ内に埋め込まれた状態情報と同様、セッションキーとそれに対応する記憶状態情報は、１つの通信セッションにのみ関連付けられる。
【０００６】
これらの理由から、１つ以上のこれらの欠点および他の欠点に対処するために、ステートレスプロトコルを使用したクライアントとサーバとの間の複数の通信セッションにわたる状態情報を管理するシステムが望ましい。
【課題を解決するための手段】
【０００７】
本発明は、ステートレスプロトコルによる通信中の状態情報の管理を含む。具体的には、本発明は、サーバにはアクセス不可能な情報を記憶するクライアント−サーバ記憶領域を使用して、ステートレスプロトコルによるクライアントとサーバとの間の複数の通信セッションにわたる状態情報を管理することを含む。本発明によると、クライアントに、サーバにはアクセス不可能な（例えばクライアントのブラウザキャッシュに記憶された）情報としてクライアント識別子を記憶させることによって、サーバ側のアプリケーションは、クッキーを使用せずにクライアントを一意に識別することができる。その後の通信セッションでは、このクライアント識別子を使用して任意の量および種類の状態情報を使用することができる。
【０００８】
一実施形態では、本発明は、状態情報のためにブラウザキャッシュのみを使用し、クッキー、スクリプト、アクティブコンテンツには依存しない。本発明は、サーバにはアクセス不可能であり、したがってクッキーよりもはるかに安全な情報を記憶するクライアント側のブラウザキャッシュを使用する。サーバはキャッシュ不能埋込みコンテンツへのハイパーリンクを備えたキャッシュ可能ウェブページをクライアントに配信する。キャッシュ不能な埋込みコンテンツへのハイパーリンクには、サーバは、クライアントに一意に関連付けられたトークンまたは識別子を付加する。クライアントがこのハイパーリンクを介して、キャッシュされたウェブページから参照された埋込みコンテンツを入手すると、この識別子もサーバに送られる。サーバは、クライアントから識別子を受け取ると、記憶された状態情報にアクセスする。このようにして、ブラウザがこのウェブページをキャッシュする限り、サーバはクライアントを一意に識別することができる。サーバは、識別子に関連付けられた状態情報を、例えばサーバにとってアクセス可能なメモリに記憶する。
【０００９】
本発明の一態様による方法は、クライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理する。クライアントとサーバは、データ通信ネットワークに接続されている。クライアントは、第１の記憶領域にストアされた情報からウェブコンテンツを入手する。この情報は、サーバがアクセスすることができない。入手したウェブコンテンツは、第２の記憶領域にストアされた追加コンテンツへの参照を含む。この参照は、クライアント固有のクライアント識別子を含む。この方法は、サーバにおいて、第２の記憶領域にストアされた追加コンテンツに対するクライアントからの要求を受け取ることを含む。受け取った要求にはクライアント識別子が含まれている。また、この方法は、追加コンテンツの生成を含む。追加コンテンツは、クライアント固有のものである。また、この方法は、受け取ったクライアント識別子に応答してデータベースにアクセスし、クッキーを使用せずに状態情報を管理する。
【００１０】
本発明の他の態様による方法は、データ通信ネットワークに接続されたクライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理する。この方法は、サーバにおいて、サーバにとってアクセス可能なウェブコンテンツを求めるクライアントからの要求を受け取ることを含む。また、この方法は、受け取った状況に応答してクライアント識別子を生成し、受け取った要求に関する状態情報を、生成されたクライアント識別子に関連付けて、状態管理を可能にすることを含む。また、この方法は、状態情報をデータベースに記憶することも含む。また、この方法は、生成されたクライアント識別子をウェブコンテンツ内の参照に付加することも含む。この参照は、第２の記憶領域にストアされた追加コンテンツへのリンクを提供する。また、この方法は、クライアント識別子が付加された参照を備えたウェブコンテンツをクライアントに配信することも含み、クライアントは、配信されたウェブコンテンツを受け取ると、それを第１の記憶領域に情報として記憶する。第１の記憶領域にストアされたこの情報は、サーバにとってアクセス不能である。また、この方法は、サーバにおいて、第２の記憶領域にストアされた追加コンテンツに対するクライアントからの他の要求を受け取ることも含む。この受け取った他の要求には、クライアント識別子が含まれる。この方法は、追加コンテンツを生成することを含む。この追加コンテンツは、クライアントに固有のものである。また、この方法は、受け取ったクライアント識別子に応答してデータベースにアクセスし、クッキーを使用せずに状態情報を管理することも含む。
【００１１】
本発明の他の態様によると、１つまたは複数のコンピュータ可読媒体が、クライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理するためのコンピュータ実行可能コンポーネントを有する。クライアントとサーバは、データ通信ネットワークに接続されている。クライアントは、第１の記憶領域にストアされた情報からウェブコンテンツを入手する。この情報は、サーバにとってアクセス不能である。入手したウェブコンテンツは、第２の記憶領域にストアされた追加コンテンツへの参照を含む。この参照にはクライアント識別子が含まれる。コンポーネントには、サーバにおいて、第２の記憶領域にストアされた追加コンテンツを求めるクライアントからの要求を受け取るインターフェースコンポーネントが含まれる。受け取った要求には、クライアント識別子が含まれる。また、コンポーネントには、追加コンテンツを生成し、受け取ったクライアント識別子に応答してデータベースにアクセスして、クッキーを使用せずに状態情報を管理するプロファイルコンポーネントも含まれる。追加コンテンツは、クライアント固有のものである。
【００１２】
本発明の他の態様によると、コンピュータ可読媒体が、クライアントのためにカスタマイズされたウェブコンテンツを表すデータ構造を記憶している。このデータ構造は、クライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理するのに使用される。クライアントとサーバはデータ通信ネットワークに接続されている。データ構造は、ウェブコンテンツをストアする第１のフィールドを含む。また、データ構造は、追加コンテンツへの参照をストアする第２のフィールドを第１のフィールド内に含む。この参照は、クライアント識別子を含み、サーバは記憶領域内の情報として記憶するためにクライアントにデータ構造を送る。この情報は、サーバにとってアクセス不能である。クライアントは、後で、この参照を介してサーバに対して追加コンテンツを要求する。サーバは、クライアント固有の追加コンテンツを生成し、クライアントに関する状態情報を、追加コンテンツを求める要求で受け取ったクライアント識別子に関連付け、関連付けられた状態情報を記憶する。
【００１３】
本発明の他の態様による方法は、クライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理する。クライアントとサーバは、データ通信ネットワークに接続されている。クライアントは、クライアントのブラウザキャッシュにストアされた情報からウェブコンテンツを入手する。入手したウェブコンテンツには、サーバによってホストされている追加コンテンツへの参照が含まれている。この参照には、クライアントに固有のクライアント識別子が含まれる。この方法は、サーバにおいて、サーバによってホストされている追加コンテンツに対するクライアントからの要求を受け取ることを含む。受け取った要求にはクライアント識別子が含まれている。また、この方法は、受け取ったクライアント識別子に応答してデータベースにアクセスし、状態情報を管理することも含む。  
あるいは、本発明は他の様々な方法および装置を含むこともできる。
【００１４】
その他の特徴も、以下の説明から一部は明らかになるであろうし、また一部は以下の説明で指摘する。
【発明を実施するための最良の形態】
【００１５】
全図面を通じて、同一の部分は同一の参照文字で示す。  
一実施形態によると、本発明は、クライアントとサーバとの間の複数の通信セッションにわたって状態情報を管理する。具体的には、本発明は、ステートレスプロトコルを使用したクライアント−サーバ間の通信中の状態管理を可能にする（例えば図３参照）。例えば、本発明によって、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を介したクライアント−サーバ通信中に、クッキーを使用せずにユーザを追跡することが可能になる。本明細書の説明の一部では、ＨＴＴＰおよびウェブ閲覧に関する実施形態を扱うが、本発明はどのような通信プロトコルを介したクライアント−サーバ間通信にも適用可能であることが、当業者には理解できるであろう。さらに、本発明の実施形態のいくつかは、本質的にステートレスで、しかもキャッシュセマンティクスをサポートするプロトコルに適用可能であるが、本発明は本質的に状態を維持するプロトコルでも実施可能である。ステートフル対話の例については後述する。さらに、状態情報は、サーバ側データベースやクライアント側データベースなど、サーバにとってアクセス可能な任意のメモリ領域、すなわちストア領域に記憶することができる。
【００１６】
ＨＴＴＰプロトコルは、パフォーマンスを向上させ、不要な通信量を減らす、リッチなキャッシュセマンティクスを定義する。キャッシングは、ウェブコンテンツがまれにしか変化しないことを前提としている。これにより、クライアントは、頻繁に使用するドキュメントのコピーをローカルで記憶することができ、同じコンテンツを繰り返し取得するために往復しなくてもすむようになる。ＨＴＴＰは、クライアントが、何らかのユニフォームリソースロケータ（ＵＲＬ）またはその他の参照に関連付けられたコンテンツが変化していないか、ウェブサーバに照会するセマンティクスを定義する。ＨＴＴＰ／１．０では、このような照会を「Ｉｆ−Ｍｏｄｉｆｉｅｄ−Ｓｉｎｃｅ」要求と呼ぶが、これはクライアントが最後にそのコンテンツのコピーをダウンロードした日付を指定するためである。それに対して、ＨＴＴＰ／１．１は、ｅＴａｇと呼ばれる不透明（opaque）な識別子による「Ｉｆ−Ｍａｔｃｈ」を使用する。いずれの場合も、ドキュメントの何らかのコピーをキャッシュ内に持っているクライアントが、その既存のコピーを使用することができるか否か照会することができる。サーバは、新しいコンテンツを提供する（すなわちキャッシュ内にあるバージョンが陳腐化していることを示す）か、または、クライアントがキャッシュされたコピーを使用することができることを意味する「Ｎｏｔ  Ｍｏｄｉｆｉｅｄ」を返すことを決める。
【００１７】
まず、図１を参照すると、例示のブロック図に、本発明によるクライアント１０２とサーバ１０４との間の通信の流れが図示されている。クライアント１０２は、キャッシュ１０８などの第１の記憶領域１０６にアクセスして、サーバ１０４との通信中に入手したコンテンツのテンポラリーコピーを記憶することができる。クライアント１０２は、例えば、ＨＴＴＰなどの要求−応答セマンティクスを有するステートレスプロトコルを使用するネットワーク１１０（例えば、図６のワイドエリアネットワーク１９８）を介して、サーバ１０４と通信する。サーバ１０４は、コンテンツを求めるクライアント１０２からの要求に応答してクライアント１０２に送るコンテナドキュメント１１６やペイロードドキュメント１１８などのコンテンツを記憶した、データベース１１４やその他の記憶領域などの第２の記憶領域１１２にアクセスすることができる。本発明によると、サーバ１０４は、データベース１１４またはその他の記憶領域に、クライアント１０２とサーバ１０４との間の通信セッションに関する状態情報を記憶する。例えば、データベース１１４には、特定のクライアントによるサーバ１０４への訪問回数を記録するテーブルを含めることができる。別法として、またはこれに加えて、サーバ１０４は、状態情報をレジストリ内の［固有トークン］→［ユーザ名＋カウンタ］などの関連付けられた値として記憶することもできる。その後の訪問時に、カウンタがインクリメントされる。他の実施形態では、データベース１１４に、クライアント１０２から受け取った、特定のコンテンツに対する要求回数を記憶する。
【００１８】
ＨＴＴＰまたはその他のプロトコルのキャッシュセマンティクスを状態管理に使用することができる。一実施形態では、本発明は状態管理に２つのドキュメントを使用する。一方のドキュメント（例えばコンテナドキュメント１１６）は、他方のドキュメント（例えばペイロードドキュメント１１８、または埋込みまたは追加コンテンツ）を参照する。したがって、クライアント１０２は、追加コンテンツを求めるためにサーバ１０４にもう１つの要求を送る。例えば、第１のドキュメントは、ＵＲＬを使用して追加コンテンツを参照するウェブコンテンツとすることができる。ＨＴＴＰの一例では、サーバ１０４はクライアント１０２を追加コンテンツにリダイレクトする。キャッシュされたウェブページのレンダリングには、ネットワークアクセスを必要としないが、キャッシュされたウェブページから参照された埋込みコンテンツをフェッチするには、サーバ１０４と対話する必要がある。コンテナ／ペイロードの関係は、以下の表１に示す関係を含む様々な方法で設定することができるが、これらには限定されない。コンテナドキュメントは、最上位（top-level）ドキュメントとすることもできる。
【００１９】
【表１】
2004280828.tif 000003
【００２０】
上記の実施形態の中には、同じウィンドウコンテキスト内にコンテナとペイロードが同時に存在するものもある。それに対して、メタリフレッシュを使用する実施形態は、コンテナとペイロードとが決して混在しないように、コンテナをペイロードに置き換えることを前提とする。例えば、以下のようなメタリフレッシュを使用することができる。
<META http-equiv="refresh" content="2;URL=http://www.pageA.net/">
【００２１】
上記のメタタグは、訪問者を２秒後にタグ中のＵＲＬに送る。他の実施形態では、直ちに転送するためにこのタイミングをゼロ秒に設定したり、転送を送らせるために３０秒以上に設定することもできる。
【００２２】
動作時、本発明のソフトウェアは、クライアント１０２とサーバ１０４との間の複数の通信セッションにわたって状態情報を管理する。維持される状態情報としては、クライアント１０２および／またはサーバ１０４に関する任意の情報が含まれる。例えば、状態情報には、サーバ１０４が提供する特定のウェブページにクライアント１０２が訪問した回数、サーバ１０４が運営するウェブサイトでのクライアント１０２の購入記録、電子ショッピングカートなどが含まれるが、これらには限定されない。状態情報は、複雑で、ウェブアプリケーション（例えば電子商取引の場合のショッピングカート）の内部の情報が含まれることがあるため、状態情報は一般にサーバ側のデータベース１１４に記憶される。サーバ側データベース１１４の実施形態では、クライアント１０２はサーバ側データベース１１４のインデックスとなる一意の識別子を記憶する。この識別子は、各クライアント１０２に固有のものである。識別子はセッションごとに変わらないため、サーバ１０４はこの識別子を使用して、クライアント１０２がその後訪問したときに、データベース１１４内の実際の状態情報を検索したり変更したりすることができる。
【００２３】
次に図２を参照すると、例示のフローチャートに、クライアント１０２に固有識別子を付与するサーバソフトウェアの動作が示されている。サーバ１０４が運営するウェブサイトにクライアント１０２が最初に訪問するとき、クライアント１０２は、そのウェブサイトを実現するウェブコンテンツを求める要求を送る。２０２でサーバ１０４はこの要求を受け取り、受け取った要求に２０４でクライアント識別子がないか調べる。例えば、この要求は、ＵＲＬ内の照会文字列パラメータとしてクライアント識別子を有するＵＲＬとすることができる。サーバ１０４が、クライアント１０２から受け取ったウェブコンテンツ要求内でクライアント識別子を特定することができない場合、サーバ１０４は、クライアント１０２がそのウェブサイトに初めて訪問したものとみなし、２０６でサーバ１０４のコンピュータ実行可能カスタマイズコンポーネントを介してクライアント１０２のクライアント識別子を生成する。次に、サーバ１０４は受け取った要求に関する状態情報を、生成されたクライアント識別子に関連付け、状態管理を行えるようにする。例えば、クライアント識別子は、クライアント１０２を一意に識別する英数字文字列とすることができる。サーバ１０４は、データベース１１４内に、生成されたクライアント識別子に関連付けられたレコード、プロファイル、またはその他のデータ構造を作成する。作成されたレコードには、現在の通信セッションおよび将来の通信セッション中に入手した状態情報がストアされる。
【００２４】
本発明では、クライアント１０２によって要求されるウェブコンテンツ（例えばコンテナドキュメント１１６）は、表１に示すものなど、サーバ１０４が運営するかまたはその他の方法でサーバ１０４にとってアクセス可能な埋込みコンテンツ（例えばペイロード）への参照またはリンクを含む。２０８で、サーバ１０４は、この参照を変更し、生成されたクライアント識別子を組み込む。例えば、埋込みコンテンツへの参照またはリンクがＵＲＬを含む場合、サーバ１０４は、クライアント識別子をＵＲＬ内の照会文字列内のパラメータとして付加する。当業者には、ＵＲＬを変更してクライアント識別子を組み込むその他の手段があり、本発明で適用可能であることが理解できるであろう。サーバ１０４は、２１０で、クライアント識別子が追加された参照を備えた、要求されたウェブコンテンツを、クライアント１０２に配信、またはその他の方法で送る。クライアント１０２は、配信されたウェブコンテンツをクライアントのブラウザキャッシュ１０８にストアする。したがって、サーバ１０４は、既存のウェブブラウザソフトウェアを使用してブラウザキャッシュ１０８に直接アクセスすることができない。他の実施形態では、クライアント１０２は、サーバ１０４からウェブコンテンツを受け取り、受け取ったウェブコンテンツをサーバ１０４がアクセス不可能な情報として記憶する。クライアント識別子を有するウェブコンテンツまたはコンテナドキュメント１１６を、サーバアクセス不能情報（例えばキャッシュされたコンテンツ）として記憶領域（例えばクライアントのブラウザキャッシュ）に記憶することによって、サーバアクセス可能情報（例えばクッキー）を記憶する記憶領域（例えばクッキージャー（cookie jar））を使用するよりもクライアント識別子のセキュリティが向上する。クッキーは、サーバ１０４がアクセスすることができ、したがって、クライアント１０２がサーバ１０４にアクセスしたときに、クライアント１０２がサーバ１０４に対して自動的にクッキーを再実行するという点で、サーバ１０４による処理の対象となる。クライアント識別子は、コンテナドキュメント１１６が（例えばＪＡＶＡ（登録商標）ＳＣＲＩＰＴを介して）間接的に入手することができ、ペイロードコンテンツとそのすべての埋込みコンテンツは直接入手することができるが、これは、サーバ１０４がペイロードドキュメント１１８を求める要求に応じるときに完全（full）ＵＲＬを受け取るためである。上記の表１に示す関係および本明細書で具体的に記載しないその他の類似の関係によって、キャッシュ１０８内のオブジェクト（例えばコンテナドキュメント１１６）は固有の識別子を記憶し、クッキーをエミュレートすることができる。
【００２５】
一実施形態によると、サーバ１０４は、クライアント１０２による長期記憶のためにクライアント識別子が付加されたコンテナドキュメント１１６を識別する。例えば、サーバ１０４は、コンテナドキュメント１１６に、長期満了日または最近のＬａｓｔ−Ｍｏｄｉｆｉｅｄ日付を割り当てることができる。それに対して、ペイロードはキャッシュ不能としてマークされる。例えば、サーバ１０４は、ＨＴＴＰプロトコルのバージョン１．０の「Ｐｒａｇｍａ：Ｎｏ−ｃａｃｈｅ」ヘッダ、または、ＨＴＴＰバージョン１．１の「Ｃａｃｈｅ−Ｃｏｎｔｒｏ：ｎｏ−ｓｔｏｒｅ」ヘッダを使用することができる。このような構成の結果として、その後の訪問時に、クライアント１０２はコンテナのキャッシュされたコピーを入手するが、ペイロードは常に新しいものをフェッチすることになる。
【００２６】
このＨＴＴＰの実施形態では、クライアント識別子の割当は、数通りの方法で行うことができる。１つの方法では、サーバ１０４がコンテナドキュメント１１６を求める要求を受け取ると、サーバ１０４は、ＨＴＴＰヘッダに基づいて受け取った要求がＩｆ−Ｍａｔｃｈ要求またはＩｆ−Ｍｏｄｉｆｉｅｄ−Ｓｉｎｃｅ要求であるかを判断する。受け取ったＩｆ−Ｍａｔｃｈ要求またはＩｆ−Ｍｏｄｉｆｉｅｄ−Ｓｉｎｃｅ要求に応じて、サーバ１０４は３０２ Ｎｏｔ Ｍｏｄｉｆｉｅｄ応答を返す。この場合、クライアント１０２は、以前に既にそのページを訪れたことがあり、既に識別子が付与されている。
【００２７】
受け取った要求がＩｆ−Ｍａｔｃｈ要求またはＩｆ−Ｍｏｄｉｆｉｅｄ−Ｓｉｎｃｅ要求ではない場合、サーバ１０４は、クライアントのウェブブラウザに関連付ける新しい識別子文字列を作成し、その識別子をキーとするデータベース１１４内の新しいエントリを作成する。サーバ１０４は、１つの変更を加えてコンテナドキュメント１１６を返す。すなわち、ペイロードへのリンクが新たに生成された識別子文字列を含むように変更される。一実施形態では、この変更は、識別子を備えた照会文字列パラメータをハイパーリンク参照に付加することを含む。サーバ１０４がペイロードに対する要求を受け取ると（図３参照）、サーバ１０４は、クライアント１０２によって指定された着信ＵＲＬから識別子を取り出す。この識別子は、データベース１１４にストアされた状態情報の検索キーになる。
【００２８】
次に図３を参照すると、例示のフローチャートに、クライアント１０２が、後のウェブコンテンツ要求に応答して第１の記憶領域（例えばブラウザキャッシュ１０８）からウェブコンテンツを入手するシステムにおける状態管理を実施するサーバソフトの動作が示されている。３０２で、サーバ１０４は、クライアント１０２から、ブラウザキャッシュ１０８にストアされているウェブコンテンツ（例えばコンテナドキュメント１１６）が、サーバ１０４によって記憶されているウェブコンテンツと異なるか否かを判断するための照会を受け取る。３０４で、サーバ１０４は、サーバ１０４がアクセス可能であるかまたは運営するウェブコンテンツが変更されていないことを示す応答をクライアント１０２に送る。その結果、クライアント１０２は、第１の記憶領域１０６（例えばブラウザキャッシュ１０８）からそのウェブコンテンツを入手する。
【００２９】
図２に示すように、ブラウザキャッシュ１０８にストアされているウェブコンテンツは、サーバ１０４がアクセス可能な記憶領域（例えば第２の記憶領域１１２）にストアされている追加コンテンツまたは埋込みコンテンツへの参照を含む。この参照は、クライアント識別子を含む。ウェブコンテンツを完全にレンダリングするために、クライアント１０２はクライアント識別子を有する参照を含む要求をサーバ１０４に送る。３０６で、サーバ１０４はインターフェースコンポーネントを介してクライアント１０２から追加コンテンツ要求を受け取る。３０８で、サーバ１０４は受け取った要求内の参照からクライアント識別子を取り出す。３０９で、サーバ１０４はコンピュータ実行可能プロファイルコンポーネントを実行して追加コンテンツを生成する。生成されたコンテンツは、取り出されたクライアント識別子に基づくクライアント固有のコンテンツである。３１０で、サーバ１０４はさらにプロファイルコンポーネントを使用してデータベース１１４にアクセスし、クライアント識別子を使用して状態情報を管理する。例えば、サーバ１０４は状態情報の追加、削除、および／またはその他の方法による編集または修正を行うことができる。さらに、３１２で、サーバ１０４は要求された追加コンテンツをクライアント１０２に配信する。
【００３０】
図２および図３を参照すると、本発明のソフトウェアの機能は、様々な形態で実施することができる。一実施形態によると、１つ以上のコンピュータ読取り可能媒体が、図２および図３に示すようなクライアント１０２とサーバ１０４との間の複数の通信セッションにわたる状態情報を維持するコンピュータ実行可能コンポーネントを有する。サーバ１０４のインターフェースコンポーネントが、サーバ１０４が運営する追加コンテンツおよび／またはサーバ１０４がアクセス可能な記憶領域にストアされている追加コンテンツに対する、クライアント識別子付きの要求をクライアント１０２から受け取る。サーバ１０４のプロファイルコンポーネントが、データベース１１４にアクセスし、受け取ったクライアント識別子を使用して状態情報を管理する。
【００３１】
他の実施形態では、入手されたウェブコンテンツは、クライアントのブラウザキャッシュ（例えば第１の記憶領域）にストア可能なウェブページを含む。このウェブページは、１×１画素画像などの画像（例えば第２の記憶領域にストアされた追加コンテンツ）を参照するウェブバグ（web bug）を含む。この参照は、クライアント識別子を含む。ウェブバグは、クリアまたはトランスペアレントなグラフィクスインターチェンジフォーマット（graphics interchange format：ＧＩＦ）とも呼ばれる。他の実施形態では、入手されたウェブコンテンツは、クライアントの受信トレイ（例えば第１の記憶領域）にストアされるＨＴＭＬ形式の電子メール（例えば対象を絞ったスパム）を含む。この電子メールは、広告などのクライアント固有の画像（例えば第２の記憶領域にストアされた追加コンテンツ）を参照するウェブバグを含む。この参照は、クライアント識別子を含む。クライアント１０２から追加コンテンツ要求を受け取ると、サーバ１０４は要求で受け取ったクライアント識別子に基づくクライアント固有画像を生成する。サーバ１０４は、その後、生成したクライアント固有画像またはその他のコンテンツをクライアント１０２に配信する。
【００３２】
次に図４を参照すると、例示のブロック図に、様々な埋込みオブジェクトを有するＨＴＭＬなどの、最上位ドキュメント（ＴＬＤ）４０４またはコンテナドキュメント１１６を記憶するコンピュータ可読媒体（ＣＲＭ）４０２が図示されている。図４の例示のＴＬＤには、テキストと、埋込み画像と、埋込サウンドクリップと、埋込みフレームとが含まれている。ＴＬＤ４０４の基礎にあるコードは、埋込みオブジェクトへの参照またはその他のリンクもしくはハイパーリンクを含む。図４の例では、ＧＲＭ４０２は図１の第２の記憶領域１１２であり、ＴＬＤ４０４はまだクライアント識別子を組み込む変更が加えられていない。前述のように、サーバ１０４はクライアント識別子を組み込む変更を参照に加えてから、ＴＬＤ４０４を長期キャッシュするようにクライアント１０２に送る。
【００３３】
具体的には、ＣＲＭ４０２などのコンピュータ可読媒体に、クライアント１０２のためにカスタマイズされたウェブコンテンツ（例えばＴＬＤ４０４）を表すデータ構造を記憶する。サーバ１０４は、クライアント１０２とサーバ１０４との間の複数の通信セッションにわたって状態情報を管理する際にこのデータ構造を使用する。このデータ構造は、ウェブコンテンツをストアする第１のフィールドを含む。図４の例では、第１のフィールドはテキストを含む。データ構造は、第１のフィールド内に、追加コンテンツへの参照をストアする第２のフィールドも含む。サーバ１０４は、この参照にクライアント識別子を含める変更を加える。サーバ１０４は、サーバ１０４がアクセス不可能な情報として長期記憶するようにこのデータ構造をクライアント１０２に送る。クライアント１０２は、その後、第２のフィールド内の参照を介してサーバ１０４に追加コンテンツを要求する。サーバ１０４は、クライアント１０２に関する状態情報を、追加コンテンツ要求で受け取ったクライアント識別子に関連付け、その関連付けられた状態情報を記憶する。
【００３４】
次に図５を参照すると、例示のブロック図に、追加コンテンツへの参照を提供するクライアント識別子を含むハイパーリンクを有する最上位ＨＴＭＬドキュメント５０４またはコンテナドキュメント１１６が記憶されたコンピュータ可読媒体（ＣＲＭ）５０２が図示されている。この例では、サーバ１０４はクライアント１０２に識別子「ＸＹＺ」を付与している。さらに、サーバ１０４はＴＬＤ５０４内のハイパーリンクを書き換えてクライアント識別子を組み込んでいる。ハイパーリンクは、クライアント識別子が付加されたＵＲＬを介してインラインフレームを参照する。この例では、ＴＬＤ５０４内のテキストすべてのクライアントについて同じである。しかし、フレーム内のコンテンツは、クライアント識別子（例えばＸＹＺ）に基づいてクライアント１０２ごとにカスタマイズされる。このようにして、サーバ１０４は、標準ウェブページを、個人用に修正された挨拶状など、何らかのカスタマイズされたコンテンツと共にクライアント１０２に提示する。図５の例で、ＣＲＭ５０２は、ブラウザキャッシュ１０８などの、図１に示す第１の記憶領域１０６である。
【００３５】
図６に、コンピュータ１３０の形態の汎用計算装置の一例を示す。本発明の一実施形態では、コンピュータ１３０などのコンピュータは、本明細書で説明し、例示している他の図面で使用するのに適している。コンピュータ１３０は、１つ以上のプロセッサまたは処理装置１３２と、システムメモリ１３４とを有する。例示の実施形態では、システムバス１３６によって、システムメモリ１３４を含む様々なシステムコンポーネントがプロセッサ１３２に接続されている。バス１３６は、メモリバスやメモリコントローラ、周辺装置バス、アクセラレーテッドグラフィクスポート（accelerated graphics port）、プロセッサまたはローカルバスなど、様々なバスアーキテクチャを使用した、いくつかのタイプのバス構造のうちの任意の１つ以上のバス構造を示す。このようなアーキテクチャとしては、業界標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture：ＭＣＡ）バス、拡張ＩＳＡ（Enhanced ISA：ＥＩＳＡ）バス、ビデオエレクトロニクス規格協会（Video Electronics Standards Association：ＶＥＳＡ）ローカルバス、Ｍｅｚｚａｎｉｎｅバスとも呼ばれる周辺装置相互接続（Peripheral Component Interconnect：ＰＣＩ）バスなどがあるが、これらには限定されない。
【００３６】
コンピュータ１３０は、一般に少なくとも何らかの形態のコンピュータ可読媒体を有する。コンピュータ可読媒体は、揮発性と不揮発性、取外し可能と取外し不能の両方の媒体を含み、コンピュータ１３０がアクセスすることができる任意の入手可能な媒体とすることができる。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むが、これらには限定されない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータなどの情報を記憶する任意の方法および技術で実施された、揮発性および不揮発性、取外し可能および取外し不能の記憶媒体が含まれる。例えば、コンピュータ記憶媒体としては、必要な情報を記憶するために使用することができ、コンピュータ１３０がアクセス可能な、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他のメモリ技法、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、またはその他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、またはその他の任意の媒体がある。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波などの変調データ信号またはその他の伝送メカニズムの形で実現し、任意の情報配信媒体を含む。当業者なら精通しているが、変調データ信号は、その特性のうちの１つ以上の特性が情報を信号の形でコード化するように設定または変更されている。通信媒体の例としては、有線ネットワークや直接有線接続などの有線媒体、アコースティック、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。上記のいずれの組合せも、コンピュータ可読媒体の範囲に含まれる。
【００３７】
システムメモリ１３４は、取外し可能および／または取外し不能、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。例示の実施形態では、システムメモリ１３４は、読取り専用メモリ（ＲＯＭ）１３８とランダムアクセスメモリ（ＲＡＭ）１４０を含む。基本入出力システム（ＢＩＯＳ）１４２は、スタートアップ時などにコンピュータ１３０内の要素間で情報を転送するための基本ルーチンを含み、一般には、ＲＯＭ１３８にストアされている。ＲＡＭ１４０には、一般には、処理装置１３２が即時アクセス可能であるかまたは現在処理中であるか、あるいはその両方であるデータおよび／またはプログラムモジュールがストアされる。例えば、図６には、オペレーティングシステム１４４，アプリケーションプログラム１４６、その他のプログラムモジュール１４８と、プログラムデータ１５０が示されているが、これらには限定されない。
【００３８】
コンピュータ１３０、その他の取外し可能／取外し不能揮発性／不揮発性コンピュータ記憶媒体も含むことができる。例えば、図６には、取外し不能不揮発性磁気媒体の読み書きを行うハードディスクドライブ１５４が図示されている。また、図６には、取外し可能不揮発性磁気ディスク１５８の読み書き行う磁気ディスクドライブ１５６と、ＣＤ−ＲＯＭまたはその他の光媒体などの取外し可能不揮発性光ディスク１６２の読み書きを行う光ディスクドライブ１６０も示されている。例示の動作環境で使用可能なその他の取外し可能／取外し不能な揮発性／不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１５４、磁気ディスクドライブ１５６、および光ディスクドライブ１６０は一般に、インターフェース１６６などの不揮発性メモリインターフェースによってシステムバス１３６に接続される。
【００３９】
図６に示す前述のドライブまたはその他の大容量記憶装置とそれに付随するコンピュータ記憶媒体は、コンピュータ１３０のためのコンピュータ可読命令、データ構造、プログラムモジュール、およびデータを記憶する。例えば、図６のハードディスクドライブ１５４は、オペレーティングシステム１７０、アプリケーションプログラム１７２、その他のプログラムモジュール１７４と、プログラムデータ１７６を記憶するものとして図示されている。これらのコンポーネントは、オペレーティングシステム１４４、アプリケーションプログラム１４６、その他のプログラムモジュール１４８、およびプログラムデータ１５０と同じであっても異なるものであってもよいことに留意されたい。オペレーティングシステム１７０、アプリケーションプログラム１７２、その他のプログラムモジュール１７４、およびプログラムデータ１７６は、ここでは、少なくとも異なる複製であることを示すために異なる番号が付与されている。
【００４０】
ユーザは、キーボード１８０やポインティングデバイス１８２（例えばマウス、トラックボール、ペン、またはタッチパッド）などの入力装置またはユーザインターフェース選択装置を介して、コンピュータ１３０にコマンドと情報を入力することができる。その他の入力装置（図示せず）として、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどを含めることができる。これらおよびその他の入力装置は、システムバス１３６に結合されたユーザ入力インターフェース１８４を介して処理装置１３２に接続されているが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス１３６（ＵＳＢ）など、その他のインターフェースおよびバス構造によって接続することもできる。モニタ１８８またはその他のタイプのディスプレイ装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１３６に接続される。モニタ１８８のほかに、コンピュータは、プリンタやスピーカなど他の周辺出力装置（図示せず）も含むことが多く、それらは出力周辺装置インターフェース（図示せず）を介して接続することができる。
【００４１】
コンピュータ１３０は、リモートコンピュータ１９４などの１つ以上のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することもできる。リモートコンピュータ１９４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードとすることができ、一般には、コンピュータ１３０に関して上述した要素の多くまたは全部を含む。図６に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１９６およびワイドエリアネットワーク（ＷＡＮ）１９８を含むが、他のデータ通信ネットワークも含むことができる。そのようなネットワーク環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、および世界規模コンピュータネットワーク（例えばインターネット）などで一般的である。
【００４２】
ローカルエリアネットワーク環境で使用する場合、コンピュータ１３０はネットワークインターフェースまたはアダプタ１８６を介してＬＡＮ１９６に接続される。ワイドエリアネットワーク環境で使用する場合、コンピュータ１３０は一般に、インターネットなどのＷＡＮ１９８を介した接続を確立するためのモデム１７８またはその他の手段を備える。モデム１７８は、内蔵または外付けとすることができ、ユーザ入力インターフェース１８４またはその他の適切なメカニズムを介してシステムバス１３６に接続される。ネットワーク環境では、コンピュータ１３０に関して示したプログラムモジュール、またはその一部は、リモートメモリ記憶装置（図示せず）に記憶することができる。例えば、図６には、リモートアプリケーションプログラム１９２がメモリ装置に常駐するものとして図示されているが、これには限定されない。図示のネットワーク接続は一例であり、コンピュータ間の通信リンクを確立する他の手段も使用可能であることが理解できるであろう。
【００４３】
通常、コンピュータ１３０のデータプロセッサは、コンピュータの様々なコンピュータ可読記憶媒体に異なる時点で記憶された命令手段によってプログラムされる。プログラムとオペレーティングシステムは一般に、例えば、フロッピー（登録商標）ディスクやＣＤ−ＲＯＭで配布される。プログラムやオペレーティングシステムはこれらの媒体からコンピュータの補助記憶装置にインストールまたはロードされる。実行時に、少なくともその一部がコンピュータの電子主記憶装置にロードされる。本明細書に記載の本発明は、マイクロプロセッサまたはその他のデータプロセッサに関連して以下で述べる各ステップを実現する命令またはプログラムを記憶している場合、上記およびその他の様々な種類のコンピュータ可読記憶媒体を含む。また、本発明は、本明細書に記載の方法および技法によりプログラムされている場合、コンピュータそれ自体も含む。
【００４４】
例示のために、オペレーティングシステムなどのプログラムおよびその他の実行可能プログラムコンポーネントは、本明細書では個別のブロックとして示す。しかし、このようなプログラムおよびコンポーネントは、様々な時点でコンピュータの異なるストレージコンポーネントに存在し、コンピュータのデータプロセッサによって実行されるものと理解される。
【００４５】
本発明をコンピュータ１３０を含む例示のコンピューティングシステム環境に関連して説明するが、本発明は、他の多くの汎用または特殊用途コンピューティングシステム環境または構成でも動作可能である。このコンピューティングシステム環境は、本発明の使用または機能の範囲に関するいかなる制限も示唆することを意図したものではない。さらに、コンピューティングシステム環境は、例示の動作環境で示すいずれのコンポーネントまたはその組合せに関する依存関係または要件も有するものと解釈すべきではない。本発明と共に使用するのに適合する周知のコンピューティングシステム環境および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれるが、これらには限定されない。
【００４６】
本発明について、１つ以上のコンピュータまたはその他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な環境において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データタイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造を含むが、これには限定されない。本発明は、通信ネットワークを介して接続されたリモート処理装置によってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体にストアすることができる。
【００４７】
動作時、コンピュータ１３０は、図２および図３に示すものなどのコンピュータ実行可能命令を実行して、クライアント１０２とサーバ１０４との間の通信セッション中の状態情報を管理する。
【００４８】
次に、図７を参照しながら、本発明について以下の例で説明する。クライアント１０２によってキャッシュされたウェブページが、非キャッシュページを参照するフレームセットを含む。この参照では、一意のクライアント識別子が照会文字列でパラメータとして渡され、したがって、サーバ１０４はそのトークンについて、非キャッシュページを求めるＧＥＴ要求を使用して何らかの論理を実行することができる。図７を参照しながら図２で概説するサーバソフトの動作のための「ｃａｃｈｅｄ．ｐｈｐ」という例示のハイパーテキストプリプロセッサ疑似コードを、以下に示す。
【００４９】
【表２】
2004280828.tif 000004
【００５０】
ｓｅｔ＿ｐａｇｅ＿ｅｘｐｉｒｙ（）コマンドによって、長期キャッシュのためにコンテナドキュメント１１６が識別される。ｇｅｎｅｒａｔｅ＿ｒａｎｄｏｍ＿ｔｏｋｅｎ（）ルーチンが、ユーザの一意のクライアント識別子を生成する。ＦＲＡＭＥＳＥＴタグは、生成されたクライアント識別子を持ち、ペイロードコンテンツを参照する、ハイパーリングを生成する。
【００５１】
以下に、「ｎｏｎ＿ｃａｃｈｅｄ．ｐｈｐ」というハイパーテキストプリプロセッサ疑似コードを示し、図７を参照しながら図３で概要を示す。このスクリプトは、サーバソフトウェアによって生成され、非キャッシュコンテンツ（例えば追加コンテンツ）としてクライアント１０２に送られる。
【００５２】
【表３】
2004280828.tif 000005
【００５３】
ｓｅｔ＿ｍｏｄｉｆｉｅｄ＿ｄａｔｅ（）コマンドとｓｅｔ＿ｐａｇｅ＿ｎｏ＿ｃａｃｈｅ（）コマンドは、ペイロードコンテンツをキャッシュ不能コンテンツとして識別する。この例では、サーバ１０４は、ｉｎｃｒｅｍｅｎｔ＿ｃｏｕｎｔｅｒ（）を介して、ペイロードドキュメント１１８を求めるクライアント１０２の訪問または要求の回数を示すカウンタを更新することによって状態情報を管理し、ｐｒｉｎｔ＿ｎａｍｅ（）を介してクライアント１０２にクライアント１０２の名前を表示し、ｐｒｉｎｔ＿ｃｏｕｎｔｅｒを介してクライアント１０２に、クライアント１０２による訪問または要求の回数を表示する。
【００５４】
本明細書に示す例示の会社、組織、製品、ドメイン名、ユニフォームリソースロケータ、電子メールアドレス、ロゴ、人物、場所（location）、および事象は、別段の明記のない限り架空のものであり、現実の会社、組織、製品、ドメイン名、電子メールアドレス、ロゴ、人物、場所または事象との関連性を意図したものではなく、またそのように判断すべきでもない。
【００５５】
本発明またはその実施形態の要素を概説するに際して、「この」、「その」、「前記」という指示語を付した要素またはそのような指示語のない要素は（英文の冠詞「ａ」、「ａｎ」、「ｔｈｅ」、および「ｓａｉｄ」）は、その要素が１つまたは複数あることを意味することを意図したものである。「含む」、「備える」、「有する」という語は、包含することを意図したものであり、列挙した要素以外の追加の要素もあることを意味する。
【００５６】
以上により、上記の本発明の目的が達成されると共に、その他の有利な結果が得られることが理解できるであろう。
【００５７】
本発明の範囲から逸脱することなく上記の構成、製品、および方法に様々な変更を加えることができるため、以上の説明で記載し、添付図面に示したすべての内容は、例示的なものであって限定的なものではないものと解釈すべきである。
【図面の簡単な説明】
【００５８】
【図１】本発明による、クライアントとサーバとの間の通信を示す例示のブロック図である。
【図２】クライアントに一意の識別子を付与するサーバソフトの動作を示す例示のフローチャートである。
【図３】状態管理を実施するサーバソフトの動作を示す例示のフローチャートである。
【図４】様々な埋込みオブジェクトを有する最上位ドキュメントを示す例示のブロック図である。
【図５】最上位ドキュメント内の追加のコンテンツへの参照を示すクライアント識別子とのハイパーリンクを示す例示のブロック図である。
【図６】本発明を実施することができる、適合するコンピューティングシステム環境の一例を示すブロック図である。
【図７】照会文字列パラメータとしてクライアント識別子が付加された、キャッシュされていないウェブページを参照するキャッシュされたウェブページを示す例示のブロック図である。
【符号の説明】
【００５９】
１０２  クライアント
１０４  サーバ
１０８  キャッシュ
１０６  第１の記憶領域
１１０  ネットワーク
１１２  第２の記憶領域
１１４  データベース
１３０  コンピュータ
１３２  処理装置
１３４  システムメモリ
１３６  システムバス
１３８  読取り専用メモリ
１４０  ランダムアクセスメモリ
１４２  ＢＩＯＳ
１４４  オペレーティングシステム
１４６  アプリケーションプログラム
１４８  プログラムモジュール
１５０  プログラムデータ
１５４  ハードディスクドライブ
１５６  磁気ディスクドライブ
１５８  磁気ディスク
１６０  光ディスクドライブ
１６２  光ディスク
１６６  インターフェース
１７８  モデム
１８０  キーボード
１８２  ポインティングデバイス
１８４  ユーザ入力インターフェース
１８６  ネットワークインターフェース
１８８  モニタ
１９０  ビデオインターフェース
１９２  リモートアプリケーションプログラム
１９４  リモートコンピュータ
１９６  ローカルエリアネットワーク
１９８  ワイドエリアネットワーク
４０２  コンピュータ可読媒体
４０４  最上位ドキュメント
【図１】
2004280828.tif 000006
【図２】
2004280828.tif 000007
【図３】
2004280828.tif 000008
【図４】
2004280828.tif 000009
【図５】
2004280828.tif 000010
【図６】
2004280828.tif 000011
【図７】
2004280828.tif 000012