JP6159424B2 - 構造化文書のページレットのキャッシング - Google Patents

構造化文書のページレットのキャッシング Download PDF

Info

Publication number
JP6159424B2
JP6159424B2 JP2015560286A JP2015560286A JP6159424B2 JP 6159424 B2 JP6159424 B2 JP 6159424B2 JP 2015560286 A JP2015560286 A JP 2015560286A JP 2015560286 A JP2015560286 A JP 2015560286A JP 6159424 B2 JP6159424 B2 JP 6159424B2
Authority
JP
Japan
Prior art keywords
resource
web page
computing device
cache
client computing
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.)
Active
Application number
JP2015560286A
Other languages
English (en)
Other versions
JP2016519346A5 (ja
JP2016519346A (ja
Inventor
ジャン、ジシャオ
ウェイ、シャオリアン
Original Assignee
フェイスブック,インク.
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
Priority claimed from US13/782,937 external-priority patent/US9626343B2/en
Application filed by フェイスブック,インク. filed Critical フェイスブック,インク.
Publication of JP2016519346A publication Critical patent/JP2016519346A/ja
Publication of JP2016519346A5 publication Critical patent/JP2016519346A5/ja
Application granted granted Critical
Publication of JP6159424B2 publication Critical patent/JP6159424B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、一般に、構造化文書(ウェブ・ページなど)をレンダリングすることに関し、より詳細には、構造化文書を効率的にレンダリングし、体感レンダリング時間を減少させるために、構造化文書のページレットをキャッシュすること、およびキャッシュされたリソースを使用することに関する。
従来、クライアント・デバイスによって送信されたウェブ・ページまたは他の構造化文書を求める要求が、ウェブ・ページをホストするサーバまたはコンピューティング・システムによって受信されるとき、ホストするシステムは、通常、ハイパー・テキスト・マークアップ言語(HTML)、拡張可能なマークアップ言語(XML)、または他のウェブ・ブラウザにサポートされる構造化文書の形式で、ベース・ウェブ・ページを生成する。生成された構造化文書は次いで、クライアント・デバイスでのレンダリングのために、ハイパーテキスト転送プロトコル(HTTP)または他の好適な接続を通じて、要求するクライアントに応答して送信される。構造化文書は、送信された文書内に埋め込まれる、1つもしくは複数のリソース(たとえば、JavaScript(登録商標)スクリプトまたはリソース、カスケーディング・スタイル・シート(CSS)リソース、画像、動画、その他)、またはそのようなリソースへの参照を含む。例として、HTML文書に埋め込まれるリソースは、リソースのタイプに応じて、一般に、とりわけ、スクリプト要素、画像要素、またはオブジェクト要素内に含まれてよい、またはそれらの要素内で指定されてよい。リソースを参照する、または指定する要素は、ウェブ・ページを要求するクライアントに対してリソースのロケーションを識別するソース属性(たとえば、src)を含む。通常、リソースを受信すると、クライアント・デバイスで稼働しているウェブ・ブラウザまたは他のクライアント・アプリケーションが、受信された構造化文書の文書オブジェクト・モデル(DOM:document object model)表現を構築し、文書に埋め込まれるリソース(これは、1つまたは複数の他の外部のロケーションにあってもよい)を要求する。
さらに、リモート・クライアントでウェブ・コンテンツを見るユーザが(たとえば、現在レンダリングされているウェブ・ページ内のリンクをクリックすることによって、ブラウザ・アプリケーションの戻るボタンもしくは進むボタンをクリックすることによって、またはターゲット・ウェブ・ページのURLを入力することによって)、現在レンダリングされているウェブ・ページから、新しい(または「ターゲットの」)ウェブ・ページにナビゲートすることを所望するとき、ウェブ・コンテンツのレンダリングを担うブラウザは、新しいウェブ・ページを求める要求を作って、その要求を新しいウェブ・ページをホストするサーバに送信する。そのようにして、従来、ユーザが新しいウェブ・ページにナビゲートすることを要求する度に、ブラウザは、新しい全ウェブ・ページを求める要求をサーバに送信し、現在レンダリングされているページをアンロードし、サーバから受信された新しいウェブ・ページをその全体においてレンダリングする。
従来、この全ページをロードし、アンロードする方式は、ユーザが要求する各後続のページについて当てはまることになる。ウェブ・ページおよび基礎となるウェブ・ページに埋め込まれた一定のリソースは、ブラウザ・キャッシュに配置されてよく、ローカルに取り出されてよい。しかしながら、多くの動的な、または対話型のウェブ・ページは、それらが最後にレンダリングされた後、頻繁に変更されることがある、または更新されること
がある、コンテンツおよび他のリソースを含む。従来、キャッシュされたページのいずれかの部分が変更される場合、全体のキャッシュされたページが無効にされ、キャッシュから出される。
開示される主題は、リモートのおよび/またはローカルなデータ・ストアから、キャッシュされたリソースへの更新を取り出すための非同期の技法と連携して、キャッシュされたリソースを使用するウェブ・ページおよび他の構造化文書を効率的にレンダリングすることに関する。特定の実施形態は、コンテンツの再ローディング(サーバからリモートでアクセスされたにせよ、および/または、キャッシュからローカルにアクセスされたにせよ)と、1つまたは複数の以前にレンダリングされたウェブ・ページに関連してダウンロードされたスクリプトの再実行とに関連付けられている、ブラウザ・オーバーヘッドを削減する、または排除する、ウェブ・ページまたは他の構造化文書をレンダリングするためのシステム、方法、および論理にさらに関する。特定の実施形態は、ブラウザまたは基礎となるクライアント・アプリケーションに、全体のウェブ・ページを不必要にネイティブに再レンダリングさせずに、ターゲット・ウェブ・ページをレンダリングするのに必須である新しいコンテンツおよびリソースのみを要求するための、さまざまな技法を利用する。
さまざまな実施形態において、キャッシュされたリソースが、キャッシュに記憶された後に変更されている場合、1つまたは複数の増分更新が、キャッシュされたリソースをリフレッシュするために生成されてよい。
さまざまな実施形態において、キャッシュされたリソースが、キャッシュに記憶された後に変更されている場合、1つまたは複数の新しい置換リソースが、キャッシュされたリソースをリフレッシュするために生成されてよい。
例示的なネットワーク環境を示す図。 図1の例示的なネットワーク環境の例示的なコンポーネントのブロック図。 ウェブ・ページを求める要求をサーブするための例示的な方法を示すフローチャート。 ウェブ・ページのためのページレットをサーブするための例示的な方法を示すフローチャート。 ページレットをリフレッシュするための例示的な方法を示すフローチャート。 ページレットをリフレッシュするためのさらなる例示的な方法を示すフローチャート。 ページレットをレンダリングするための例示的な方法を示すフローチャート。 例示的なコンピュータ・システム・アーキテクチャを示す図。
特定の実施形態は、リモートのおよび/またはローカルなデータ・ストアから、キャッシュされたリソースへの更新を取り出すための非同期の技法と連携して、キャッシュされたリソースを使用するウェブ・ページおよび他の構造化文書を効率的にレンダリングすることに関する。特定の実施形態は、コンテンツの再ローディング(サーバからリモートでアクセスされたにせよ、および/または、キャッシュからローカルにアクセスされたにせよ)と、1つまたは複数の以前にレンダリングされたウェブ・ページに関連してダウンロードされたスクリプトの再実行とに関連付けられている、ブラウザ・オーバーヘッドを削
減する、または排除する、ウェブ・ページまたは他の構造化文書をレンダリングするためのシステム、方法、および論理にさらに関する。特定の実施形態は、ブラウザまたは基礎となるクライアント・アプリケーションに、全体のウェブ・ページを不必要にネイティブに再レンダリングさせずに、ターゲット・ウェブ・ページをレンダリングするのに必須である新しいコンテンツおよびリソースのみを要求するための、非同期JavaScriptおよびXML(AJAX:Asynchronous JavaScript and
XML)技法を利用する。特定の実施形態は、クライアント・デバイス上で動作するブラウザのコンテキスト内で実行され得るプロセスに関し、プロセスは、ウェブ・ページを求めるブラウザからの要求を遮り、1つまたは複数のキャッシュされたリソースにアクセスし、1つまたは複数のキャッシュされたリソースへの増分更新を求める要求を送信して、ウェブ・ページを更新された形式でレンダリングする。さまざまな例示的な実施形態において、1つまたは複数の説明されるウェブ・ページは、ソーシャル・ネットワーキング・システム、またはウェブ・サイト内で実行されるソーシャル・ネットワーキング・サービスに関連付けられていてよい。しかしながら、開示される主題の実施形態は、任意のタイプのネットワーク・アドレス指定可能なリソースまたはウェブ・サイトによってホストされる、構造化文書の取り出しおよびレンダリングへの適用を有する。本明細書で使用されるとき、「ユーザ」は、個人、グループ、またはエンティティ(ビジネスまたはサードパーティ・アプリケーションなど)であってよい。
特定の実施形態は、多数のネットワーク・アドレス指定可能なシステムを含む、インターネットなどのワイド・エリア・ネットワーク環境において動作することができる。図1は、さまざまな例示的な実施形態がその中で動作することができる例示的なネットワーク環境を示す。ネットワーク・クラウド60は、一般に、本明細書で説明されるシステムおよびホストがその上で通信することができる、1つまたは複数の相互接続されたネットワークを表現する。ネットワーク・クラウド60は、パケット・ベースのワイド・エリア・ネットワーク(インターネットなど)、プライベート・ネットワーク、無線ネットワーク、衛星ネットワーク、セルラー・ネットワーク、ページング・ネットワーク、その他を含む。図1が示すように、特定の実施形態は、ソーシャル・ネットワーキング・システム20、および1つまたは複数のクライアント・デバイス30を備えるネットワーク環境において動作することができる。クライアント・デバイス30は、ネットワーク・サービス・プロバイダ、無線キャリア、または任意の他の好適な手段を通じて、ネットワーク環境に動作可能に接続される。
例示的な一実施形態において、ソーシャル・ネットワーキング・システム20は、本明細書で説明されるように、ユーザが、互いに通信する、または別のやり方で対話する、およびユーザ・プロフィールなどのコンテンツにアクセスするのを可能にするコンピューティング・システムを備える。ソーシャル・ネットワーキング・システム20は、さまざまな例示的な実施形態において、1つまたは複数の物理サーバ22と、データ・ストア24とを備える、ネットワーク・アドレス指定可能なシステムである。1つまたは複数の物理サーバ22は、例として、一組のルータおよび/またはネットワーキング・スイッチ26を通じて、コンピュータ・ネットワーク60に動作可能に接続される。例示的な一実施形態において、1つまたは複数の物理サーバ22によってホストされる機能は、ウェブ・サーバまたはHTTPサーバ、FTPサーバ、ならびに、限定されるものでないが、コモン・ゲートウェイ・インターフェース(CGI:Common Gateway Interface)スクリプト、PHPハイパー・テキスト・プリプロセッサ(PHP)、アクティブ・サーバ・ページ(ASP)、ハイパー・テキスト・マークアップ言語(HTML)、拡張可能なマークアップ言語(XML)、Java(登録商標)、JavaScript、非同期JavaScriptおよびXML(AJAX)、その他を使用して実装されるウェブ・ページおよびアプリケーションを含む。
物理サーバ22は、ソーシャル・ネットワーキング・システム20の動作を対象とした機能をホストすることができる。例として、ソーシャル・ネットワーキング・システム20は、1つまたは複数のクライアント・デバイス30における1人または複数のユーザが、情報を見る、および投稿するだけでなく、そのウェブ・サイトを通じて互いに通信することを可能にする、ウェブ・サイトをホストする。サーバ22は、たとえばソーシャル・ネットワーキング・システム20をホストする、非常に多くのサーバ、ならびに他のコンテンツ配信サーバ、データ・ストア、およびデータベースを含むが、これ以降これらのサーバ22をサーバ22と称す。データ・ストア24は、ソーシャル・ネットワーキング・システムの動作に関する、およびソーシャル・ネットワーキング・システムの動作をイネーブルにする、コンテンツおよびデータを、デジタル・データ・オブジェクトとして記憶することができる。データ・オブジェクトは、特定の実装形態において、通常、データ・ファイル、データベース、またはレコードにおいて記憶された、または具体化されたデジタル情報のアイテムである。コンテンツ・オブジェクトは、テキスト(たとえば、ASCII、SGML、HTML)、画像(たとえば、jpeg、tif、およびgif)、グラフィックス(ベクトル・ベースまたはビットマップ)、オーディオ、動画(たとえば、mpeg)、または他のマルチメディア、およびそれらの組合せを含む、多くの形式を取ることができる。コンテンツ・オブジェクト・データはまた、実行可能なコード・オブジェクト(たとえば、ブラウザ・ウインドウまたはフレーム内で実行可能なゲーム)、ポッドキャスト、その他を含む。論理的には、データ・ストア24は、リレーショナル・データベースおよびオブジェクト指向データベースなどの、多様な別個のデータベースおよび統合データベースのうちの1つまたは複数に対応し、データベースは、1つまたは複数の物理システムに記憶された論理的に関係したレコードまたはファイルの統合された集合として、情報を維持する。構造的には、データ・ストア24は、一般に、大規模クラスのデータ・ストレージおよびマネジメント・システムのうちの1つまたは複数を含む。特定の実施形態において、データ・ストア24は、1つまたは複数のデータベース・サーバ、マス・ストレージ・メディア、メディア・ライブラリ・システム、ストレージ・エリア・ネットワーク、データ・ストレージ・クラウド、その他などのコンポーネントを含む、任意の好適な物理システムによって実装されてよい。例示的な一実施形態において、データ・ストア24は、1つまたは複数のサーバ、データベース(たとえば、MySQL)、および/またはデータ・ウェアハウスを含む。
データ・ストア24は、ソーシャル・ネットワーキング・システム20の異なるユーザおよび/またはクライアント・デバイス30に関連付けられているデータを含む。特定の実施形態において、ソーシャル・ネットワーキング・システム20は、システム20のユーザごとにユーザ・プロフィールを維持する。ユーザ・プロフィールは、ソーシャル・ネットワークのユーザを記述するデータを含み、データは、たとえば、正式な名前(人の名前、ミドルネーム、および名字、商標、ならびに/または、ビジネス・エンティティの会社名、その他)、職歴、学歴、趣味または選好、地理的なロケーションなどの、経歴の、人口統計の、および他のタイプの記述的な情報、ならびに追加的な記述的データを含む。例として、ユーザ・プロフィールは、ユーザの誕生日、交際状態、居住市、その他を含む。システム20は、異なるユーザ間の1つもしくは複数の関係、または接続を記述するデータをさらに記憶する。関係情報は、同様の、または共通の職歴、グループ・メンバーシップ、趣味、または学歴を有するユーザを示すことができる。ユーザ・プロフィールはまた、他のユーザに対するユーザの情報へのアクセスを左右するプライバシー設定を含む。
クライアント・デバイス30は、一般に、コンピュータ・ネットワーク上で通信する(たとえば、リモートで)ための機能を含むコンピュータまたはコンピューティング・デバイスである。クライアント・デバイス30は、好適なコンピューティング・デバイスの中でもとりわけ、デスクトップ・コンピュータ、ラップトップ・コンピュータ・携帯情報端末(PDA)、車内もしくは車外のナビゲーション・システム、スマート・フォンもしく
は他のセルラー・フォンもしくはモバイル・フォン、またはモバイル・ゲーム・デバイスであってよい。クライアント・デバイス30は、ウェブ・ブラウザ(たとえば、マイクロソフト・ウィンドウズ(登録商標)インターネット・エクスプローラ、モジラ・ファイアフォックス、アップル・サファリ、グーグル・クローム、およびオペラ、その他)などの、1つまたは複数のクライアント・アプリケーションを実行して、コンピュータ・ネットワーク上でコンテンツにアクセスし、コンテンツを見ることができる。特定の実装形態において、クライアント・アプリケーションは、クライアント・デバイス30のユーザが、ソーシャル・ネットワーキング・システム20によってホストされるリソースなどの、取り出されるべき固有のネットワーク・リソースのアドレスを入力することを可能にする。これらのアドレスは、ユニフォーム・リソース・ロケータ、すなわち、URLであってよい。その上、ページまたは他のリソースが取り出されると、クライアント・アプリケーションは、ユーザが他のリソースへのハイパーリンク上を「クリックする」ときに、他のページまたはレコードへのアクセスを提供することができる。例として、そのようなハイパーリンクは、ウェブ・ページ内に配置されていてよく、ユーザに別のページのURLを入力しそのページを取り出す自動化されたやり方を提供する。
それ自体が多数の埋め込まれたリソースを含むことがある、ウェブ・ページ、またはウェブ・ページ内に埋め込まれたリソースは、データ・レコードを含むことができ、データ・レコードは、たとえば、プレーン・テキスト情報、または、ソフトウェア・プログラム、もしくは他のコード・オブジェクト、グラフィックス、画像、オーディオ信号、動画、その他などの、より複雑なデジタルでエンコードされたマルチメディア・コンテンツである。ウェブ・ページを作成するための1つの普及したマークアップ言語が、ハイパー・テキスト・マークアップ言語(HTML)である。他の汎用ウェブ・ブラウザにサポートされる言語および技術は、拡張可能なマークアップ言語(XML)、拡張可能なハイパー・テキスト・マークアップ言語(XHTML)、JavaScript、カスケーディング・スタイル・シート(CSS)、およびしばしば、Javaを含む。例として、HTMLは、ページ内に埋め込まれ得る、テキストおよびリンク、ならびに画像、ウェブ・アプリケーションおよび他のオブジェクトのための構造セマンティクスを表すことによって構造化文書を作成するように、ページ・デベロッパーをイネーブルにする。一般に、ウェブ・ページは、静的文書としてクライアントに配布されてよい。しかしながら、ページに埋め込まれたウェブ要素の使用を通して、対話型の経験が、ページまたはページのシーケンスにより達成され得る。クライアントにおけるユーザ・セッションの間、ウェブ・ブラウザは、そのページをホストするウェブ・サイトから受信された、または取り出されたページおよび関連付けられているリソースだけでなく、潜在的には、他のウェブ・サイトからのリソースを、解釈し、表示する。
より具体的には、HTMLは、ウェブ・アプリケーション、画像、または動画を含むオブジェクトまたはリソースを、ウェブ・ページなどの構造化文書内に埋め込むように、デベロッパーをイネーブルにする。一般に、HTML構造化文書は、構造化文書コンテンツ内でタグ(山括弧で囲まれた)からなるHTML要素の形式で書かれ、タグは、文書がウェブ・ブラウザによってどのように解釈されるべきか、かつ最終的にはユーザのディスプレイにどのように提示されるべきかについて、構造化文書をレンダリングするウェブ・ブラウザへの標識の役割をする。例として、HTML要素は、ヘッディング、パラグラフ、ハイパーテキスト・リンク、埋め込みメディア、および多様な他の構造体を表現する。HTMLは、従来のウェブ・ブラウザなどのHTMLプロセッサの挙動に影響するJavaScriptなどの言語のスクリプト、ならびに、テキストおよび他のコンテンツの見た目およびレイアウトを定義するカスケーディング・スタイル・シート(CSS)を含むか、またはロードする。HTML要素は、HTMLのための基本的なコンポーネントであり、2つの基礎プロパティ、すなわち、属性およびコンテンツを有する。各要素である属性およびコンテンツは、HTML要素が有効であるとみなされるために従わなければならな
い、一定の制約を有する。HTML要素は、通常、開始タグ(たとえば、〈要素名〉)、および終了タグ(たとえば、〈/要素名〉)を有する。要素の属性は、開始タグに保有され、コンテンツは、タグとタグの間に配置される(たとえば、〈要素名 属性=“値”〉コンテンツ〈/要素名〉)。
例として、HTML要素は、構造要素(たとえば、テキストまたは他のコンテンツの目的を記述する)、提示要素(たとえば、その機能に関わらず、テキストまたは他のコンテンツの見た目を記述する)、およびハイパーテキスト要素(たとえば、文書の一部を別の文書へのリンクにする)を含む。ほとんどの要素は、いくつかの共通の属性のうちのいずれかを取ることができる。例として、id属性は、文書規模の一意の識別子を要素に提供し、クラス属性は、同様の要素を分類するやり方を提供し、タイトル属性は、サブテキストの説明を要素に結び付けるために使用される。HTMLはまた、スクリプト・データおよびスタイルシート・データなどの、要素コンテンツについてのいくつかのデータタイプ、ならびに、例としてはID、名前、URIもしくはURL、番号、長さの単位、言語、メディア記述子、色、文字エンコーディング、日付および時間、その他を含む、属性値についての非常に多くのタイプを定義する。
文書構造要素は、ルート要素(開始タグ〈html〉および終了タグ〈/html〉によってそれぞれ定義される)、ヘッド要素(開始タグ〈head〉および終了タグ〈/head〉によってそれぞれ定義される)、およびボディ要素(開始タグ〈body〉および終了タグ〈/body〉によってそれぞれ定義される)を含む。ルート要素タグ〈html〉および〈/html〉は、それぞれ、HTML文書の冒頭および終了の範囲を定める。所与のHTML文書のすべての他のHTML要素は、ルート要素内に含まれる。ヘッド要素タグ〈head〉および〈/head〉は、一般に、HTML文書についての情報およびメタデータを処理するためのコンテナを定義する。ヘッド要素コンテナ内に見出される例示的な文書ヘッド要素は、限定としてではなく例として、HTML文書におけるすべての相対hrefおよび他のリンクについてのベース・ユニフォーム・リソース・ロケータ(URL)を指定するベース要素(開始タグ〈base〉および終了タグ〈/base〉によってそれぞれ定義される)、他の文書(たとえば、外部CSSファイルのための)へのリンクを指定するリンク要素(開始タグ〈link〉および終了タグ〈/link〉によってそれぞれ定義される)、HTML文書についての追加的なメタデータを指定するために使用されてよいメタ要素(開始タグ〈meta〉および終了タグ〈/meta〉によってそれぞれ定義される)、文書ヘッダ内に汎用オブジェクトを含めるために使用されるオブジェクト要素(開始タグ〈object〉および終了タグ〈/object〉によってそれぞれ定義される)、スクリプト命令(たとえば、JavaScript)のためのコンテナ、またはsrc(ソース)属性を有する外部スクリプトへのリンクとしての役割をするスクリプト要素(開始タグ〈script〉および終了タグ〈/script〉によってそれぞれ定義される)、文書のためのスタイルを指定し、スタイル命令(たとえば、インラインCSSルールのための)のためのコンテナとしての役割をするスタイル要素(開始タグ〈style〉および終了タグ〈/style〉によってそれぞれ定義される)、ならびに、文書タイトルを定義するタイトル要素(開始タグ〈title〉および終了タグ〈/title〉によってそれぞれ定義される)を含む。
ボディ要素〈body〉は、HTML文書の表示可能なコンテンツのためのコンテナを表現する。例示的なボディ要素は、限定としてではなく例として、ブロック要素(たとえば、とりわけ、基本的なテキスト要素およびリスト要素)、インライン要素(たとえば、アンカー要素およびフレーズ要素)、および画像要素およびオブジェクト要素を含む。ボディ要素内に位置付けられるスクリプト要素は、文書にスクリプトを置くために使用されてよい(たとえば、スクリプト要素は、ブロックまたはインライン・コンテンツを動的に生成するための命令を保有することができる)。画像要素(開始タグ〈img〉および終
了タグ〈/img〉によってそれぞれ定義される)は、文書の中に画像を挿入するために使用されてよい。例として、画像要素は、画像が配置されるURLを指定するsrc属性を含む。オブジェクト要素(開始タグ〈object〉および終了タグ〈/object〉によってそれぞれ定義される)は、含まれるタイプの属性において指定されたタイプの文書の中にオブジェクトを挿入するために使用されてよい。別の頻繁に使用されるHTML要素は、ボディ要素の代替として使用されてよいフレームセット要素である。
一般に、ウェブ・アプリケーションは、ネットワーク上でウェブ・ブラウザもしくは他のクライアント・アプリケーションを通じてアクセスされ得るアプリケーション、または、ウェブ・ブラウザにサポートされる言語においてコード化され、実行可能なアプリケーションをレンダリングするためにウェブ・ブラウザに依存するコンピュータ・ソフトウェア・アプリケーションである。ウェブ・アプリケーションは、主として、ウェブ・ブラウザの遍在性、クライアント(ときに、シン・クライアントと称す)としてのリモート・コンピューティング・デバイスで起動されたウェブ・ブラウザを使用する利便性、およびソフトウェアを配信してリモート・クライアント上にインストールすることなく、ウェブ・アプリケーションを更新し、維持する対応する能力の結果として、大衆性を得てきた。しばしば、ウェブ・アプリケーションを実装するために、ウェブ・アプリケーションは、関連付けられたウェブ・サイトのバックエンド・サーバにおいて提供される1つまたは複数のリソースへのアクセスを要する。加えて、ウェブ・アプリケーションは、しばしば、他のアプリケーションに関連付けられている追加的なリソースへのアクセスを要する。
ソーシャル・ネットワーキング・システム20は、リモート・クライアント30のユーザが、ユーザ・セッションの間にそれを用いて対話することができる、数多くの特徴を含む。特定の実施形態において、これらの特徴は、ウェブ・アプリケーションとして実装されてよく、サーバ22、ならびに他の外部サーバまたはデータ・ストアに要求されたJavaScriptリソースおよびCSSリソースを利用することができる。ウェブ・アプリケーションまたはリソースは、フレームもしくはiFrame、セクションもしくは「div」、その他などにおいて、リモート・クライアントにサーブされるさまざまなウェブ・ページに埋め込まれてよい。特定の実施形態において、ソーシャル・ネットワーキング・システム20は、ユーザがソーシャル・ネットワーキング・システム20にアクセスしている間にそれを用いて対話することができる、異なる種類のアイテムのためのいくつかのオブジェクトを、データ・ストア24に維持する。例示的な一実施形態において、これらのオブジェクトは、ユーザ・プロフィール、アプリケーション・オブジェクト、およびメッセージ・オブジェクト(ウォール投稿、電子メール、および他のメッセージのためなど)を含む。一実施形態において、オブジェクトは、その関連付けられたアイテムのインスタンスごとに、システム20によって記憶される。本明細書で論じられるこれらのオブジェクトおよびアクションは、例証目的のみのために提供され、無限の数の変形および特徴が、ソーシャル・ネットワーキング・システム20上で提供され得ることが認識されてよい。
上で説明されたように、ウェブ・ページまたは基礎となる構造化文書は、論理的に、視覚的に、または別のやり方で、セグメント化されてよい、またはセクションに分離されてよい。例として、ウェブ・ページをエンコードするのに使用される構造化文書は、開始および終了HTML〈div〉タグによって表される、1つまたは複数のブロック・レベル要素を含む。バックグラウンドとして、汎用ウェブ・ブラウザの場合、ウェブ・ページの表示可能な要素は、ブロックまたはインラインのいずれかとしてレンダリングされてよい。すべての要素は文書シーケンスの一部であると同時に、ブロック要素は、その親要素内で、行をまたいで分かれない矩形のオブジェクトのように見え、周囲の要素とは独立して設定され得る、ブロック・マージン、ならびに幅および高さのプロパティを有する。反対に、インライン要素は、文書テキストのフローの一部として扱われる。インライン要素は
、マージン、幅、または高さ設定を有することはできず、行をまたいで分かれる。インライン要素は、ボディ要素の内部に直接置かれることはできない。インライン要素は、ブロック・レベル要素内に完全にネストされなければならない。
別の例として、ウェブ・ページはまた、HTMLフレーム要素(たとえば、開始タグ〈frame〉および終了タグ〈/frame〉によってそれぞれ表される)を使用して構造的に指定されるように、1つまたは複数のフレームに分割されてもよい。フレームは、ウェブ・ブラウザ表示ウィンドウがセグメントに分割されるのを可能にし、セグメントの各々は、異なる文書を見せることができる。別のフレーム要素は、インライン・フレーム要素(開始タグ〈iframe〉および終了タグ〈/iframe〉によってそれぞれ表す)である。インライン・フレームは、別のHTML構造化文書をフレーム内に置く。オブジェクト要素とは異なり、インライン・フレームは、他の要素によって定義されるリンクのための「ターゲット」フレームであってよい。
以下では、とりわけ、ブロック・レベル要素、フレーム、またはインライン・フレームなどの、ウェブ・ページの、またはウェブ・ページをエンコードするために使用される構造化文書の任意の論理的、構造的、または視覚的なセクションもしくは部分を、以下では各々「ページレット」と称す。
クライアント・デバイス(たとえば、クライアント・デバイス30)のユーザが、少なくとも部分的にソーシャル・ネットワーキング・システム20によってホストされる特定のウェブ・ページ(以下、「ターゲット構造化文書」とも称す)を見たいと所望するとき、ユーザのウェブ・ブラウザ、または他のクライアント・サイドの文書レンダリング・エンジン、または好適なクライアント・アプリケーションは、要求を作って、ソーシャル・ネットワーキング・システム20に送信する。要求は、一般に、URLまたは他の文書識別子、ならびにメタデータまたは他の情報を含む。例として、要求は、ユーザIDなどの、ユーザを識別する情報、ならびに、ユーザのクライアント・コンピューティング・デバイス30上で稼働するウェブ・ブラウザまたはオペレーティング・システムを識別する、または特徴付ける情報を含む。要求はまた、ユーザのクライアント・デバイスの地理的なロケーション、またはユーザのクライアント・デバイスの論理ネットワークロケーションを識別する、ロケーション情報を含む。要求はまた、要求がいつ送信されたかを識別するタイムスタンプを含む。
次に、ウェブ・ページを求める要求をサーブするための方法を、図2のブロック図および図3のフローチャートを参照して説明する。例示的な一実施形態において、方法は、302で、少なくとも部分的にソーシャル・ネットワーキング・システム20によってホストされるウェブ・ページを求める、クライアント・デバイス30でのクライアント・アプリケーションからの要求を、ソーシャル・ネットワーキング・システム20におけるサーバ22または他のコンピューティング・システムが受信することにより始まる。上で説明されたように、要求は、一般に、ウェブ・ページ・ロケーションに対応したURLまたは他の文書識別子、およびメタデータまたは他の情報を含む。例として、要求は、ユーザIDなどの、要求を行うクライアント・アプリケーションのユーザを識別する情報、ならびにユーザのクライアント・コンピューティング・デバイス30上で稼働するクライアント・サイドの文書レンダリング・アプリケーション(たとえば、ウェブ・ブラウザ)202またはオペレーティング・システムを識別する、または特徴付ける情報を含む。要求はまた、ユーザのクライアント・デバイスの地理的なロケーション、またはユーザのクライアント・デバイスの論理ネットワークロケーションを識別する、ロケーション情報を含む。要求はまた、要求がいつ送信されたかを識別するタイムスタンプを含む。認証プロセス204が、304で、要求を行うユーザが、要求されたウェブ・ページを受信するために認可されるか否か(たとえば、ユーザがログインに成功しているか、およびユーザは、ユー
ザがアクセスまたは管理権限を有するページを要求しているか)を、最初に決定する。
特定の実施形態において、ウェブ・ページ・サービング・プロセス206が次いで、要求を分析し、306で、マークアップ言語コード(たとえば、HTML、XML、または他の好適なマークアップ言語コード)を使用して、ベース(骨組み)構造化文書を生成する。特定の実施形態において、ベース構造化文書は、ヘッド要素(たとえば、HTMLヘッド要素)と、ボディ要素(たとえば、HTMLボディ要素)とを含む。特定の実施形態において、ヘッド要素は、要求するクライアント30においてページ・アセンブル・プロセス208を実装するための実行可能なコード・セグメントを含む。特定の実施形態において、ページ・アセンブル・プロセス208を実装するための実行可能なコード・セグメントは、JavaScriptコード・セグメントであり、JavaScript関数ライブラリを含む。ヘッド要素はまた、1つもしくは複数の初期リソース(たとえば、JavaScriptまたはCSS)、または外部ロケーション(たとえば、サードパーティ・サイト)からダウンロードされる、そのようなリソースへの参照(たとえば、選択されたリソースの位置を突き止めるための対応するソース(src)識別子を有するスクリプト要素、画像要素、またはオブジェクト要素の形式での)を含む。特定の実施形態において、ベース構造化文書に含まれる初期リソースの数を最小限にすること(たとえば、要求するクライアント30へのベース構造化文書の送信を早めるために)が望ましい。特定の実施形態において、ボディ要素は、要求するクライアント30によって受信されると、1つまたは複数のプレース・ホルダをレンダリングするための、マークアップ言語コードを含む。特定の実施形態において、ページ・サービング・プロセス206は、以下でより詳細に説明されるように、対応する第2の応答においてクライアント30に送信されることになる、1つまたは複数の(一般的には複数存在する)ページレットの各々のためのプレース・ホルダを、ベース構造化文書の中に追加する。ボディ要素はまた、要求するクライアント30によって受信されると、レンダリングされることになるリソース、リソースへの参照、またはコンテンツさえも含む(しかしながら、特定の実施形態において、リソース、リソースへの参照、またはコンテンツは、ベース構造化文書において最小限にされる)。特定の実施形態において、308で、ウェブ・ページ・サービング・プロセス206は次いで、ベース構造化文書を含む初期応答または初期応答部分(以下では、「第1の応答」または「第1の応答部分」とも称す)を作って、要求するクライアント30に送信する(いくつかの実施形態においては、初期/第1の応答/応答部分の送信に先立って、たとえば、プリ・フェッチする命令などの任意のデータが、クライアントに送信されることに留意されたい)。初期応答は、HTTP上で、または任意の他の好適な接続上で、要求するクライアント30に送信されてよい。特定の実施形態において、初期応答がクライアント30に送信される接続は、永続的な伝送制御プロトコル(TCP)接続である。以下で説明するように、このことは、ベース構造化文書を受信し、要求されたウェブ・ページの残りが生成されている間に、ベース構造化文書の処理をし始め、初期応答におけるリソースを初期化する、またはダウンロードするように、クライアント30をイネーブルにする。
特定の実施形態において、306でのベース構造化文書の生成、または308での初期応答の送信の後に、または少なくとも部分的にそれと並行してさえ、ウェブ・ページ・サービング・プロセス206は、310で、ページ生成プロセス210を起動し、ページ生成プロセス210に、要求されたウェブ・ページの残りを生成するように命令する。特定の一実施形態において、ページ生成プロセス210は、複数のサブページ生成プロセスを管理するマスタ・プロセスを備え、サブページ生成プロセスは、各々が、ウェブ・ページの割り当てられたサブ部分を生成するように構成されている。すなわち、特定の実施形態において、1つまたは複数のサブページ生成プロセスの各々は、他のサブページ生成プロセスと並行して、割り当てられたページレットを生成することを始める。特定の一実施形態において、各サブページ生成プロセスがその割り当てられたページレットの生成を完了
するとき、ページ生成プロセス210は、そのページレットをページ・サービング・プロセス206に渡し、ページ・サービング・プロセス206は次いで、312で、二次応答または二次応答部分(以下では、「第2の応答」または「第2の応答部分」とも称す)としてページレットを作って、要求するクライアント30に送信する。代替実施形態において、ページ・サービング・プロセス206は、ページ生成プロセス210を備えることができ、各二次部分を、イン・プロセスで順次生成することができ、それにより、一般に、1つまたは複数の他のページ生成プロセスを起動することを伴わなくてもよい。ステップ312は、単一のステップ312として説明されているが、連続して、または並行してクライアント30に送られる、およびいくつかの実施形態では、各ページレットが生成されるとクライアント30に送られる、複数の対応する二次応答における複数のページレットを作って、送信することを一般に含んでもよいことに留意されたい。上で説明されたように、各二次応答は、初期応答が送信されたのと同じ永続的なTCPまたは他の好適な接続上で、クライアント30に送信されてよい。一実施形態において、ベース構造化文書のボディ要素は、終了タグで閉じられていないことがあり、したがって、各二次応答は、後で生成され、後で送信されるベース構造化文書のボディ要素の一部として、送信されてもよい。別の実施形態において、二次応答のうちの1つまたは複数は、1つまたは複数の独立したHTML応答として、送信されてもよい。
特定の実施形態において、要求するクライアント30、具体的には文書レンダリング・アプリケーション202(たとえば、ウェブ・ブラウザ)が初期応答を受信するとき、文書レンダリング・アプリケーション202は、初期応答およびベース構造化文書を処理し、ベース構造化文書のモデル表現をクライアント30のメモリに生成する。例として、文書レンダリング・アプリケーション202は、ベース構造化文書の文書オブジェクト・モデル(DOM)表現212を生成することができる。当業者によって認識されるように、文書レンダリング・アプリケーション202がDOM表現212を生成するとき、文書レンダリング・アプリケーション202は、マークアップ言語コードを、DOM要素またはDOMノードのDOMツリーまたはDOM階層に本質的に変換し、DOM要素またはDOMノードの各々は、可能性の中でもとりわけ、リソース、リソースのための参照、コンテンツを含むか、または保有することができる。特定の実施形態において、文書レンダリング・アプリケーション202が、ベース構造化文書において指定されたプレース・ホルダの各々のために1つまたは複数のDOMノードを生成するように、ベース構造化文書が構成される。以下では、これらのDOMノードを「プレース・ホルダDOMノード」と称す。一般に、各プレース・ホルダDOMノードは、表示されることになるいずれのリソース、リソースのための参照、またはコンテンツも含まないが、以下でより詳細に説明されるように、これらのプレース・ホルダDOMノードは、文書レンダリング・アプリケーション202によってレンダリングされ、一般的に表示されるときに、レンダリングされたベース構造化文書における箇所を本質的に確保し、そこで、続いて受信される二次応答の中で、関連付けられたページレットにおいて続いて受信されるリソース、リソースのための参照、またはコンテンツが、表示される、初期化される、または実行されることになる。
特定の実施形態において、ページ・アセンブル・プロセス208を実装するためのコード・セグメント(たとえば、JavaScript)は、文書レンダリング・アプリケーション202によって処理されると、初期化される。初期化されると、ページ・アセンブル・プロセス208は次いで、上で説明された、続いて受信される二次応答を待つことができる。初期応答に含まれる任意の他のリソース、またはリソースへの参照も、文書レンダリング・アプリケーション202によって受信されると、処理される、初期化される、実行される、またはダウンロードされる。
特定の実施形態において、二次応答の各々が文書レンダリング・アプリケーション202によって受信されるとき、ページ・アセンブル・プロセス208は、各対応するページ
レットのコンテンツを、キュー214(ページ・アセンブル・プロセス208または文書レンダリング・アプリケーション202によってアクセス可能な、一時的な、または他の好適なメモリロケーションで実装されてよい)に置くことができる。続いて、ページ・アセンブル・プロセス208は、受信された二次応答ごとに、DOM表現212において対応する(1つまたは複数の)プレース・ホルダDOMノードを識別し、対応箇所プレース・ホルダDOMノードで、または対応箇所プレース・ホルダDOMノードの代わりに、ページレットのコンテンツを、DOM表現212の中に動的に挿入する、または交換することができる。特定の実施形態において、ページ・アセンブル・プロセス208は、文書レンダリング・アプリケーション202と連携して、ページレットのコンテンツを、DOM表現212の中に動的に挿入する、または交換することができる。すなわち、ページ・アセンブル・プロセス208からの呼び出しに応答して、文書レンダリング・アプリケーション202が、コンテンツを実際に挿入する、または交換することができる。この挿入または交換は、DOM表現212における追加的なDOMノードの生成(たとえば、ページレットに対応したプレース・ホルダDOMノードのレベルでの、またはそれ以下のレベルでの、DOM表現212におけるより低次のDOMノードの生成)を伴うことに留意されたい。各二次応答のコンテンツがDOM表現212の中に挿入されるとき、挿入されたコンテンツまたはリソースは次いで、文書レンダリング・アプリケーション202によるレンダリングのために、レンダリングされ、実行され、初期化され、またはダウンロードされて、ユーザに表示される。
特定の実施形態において、デバイス・キャッシュ・コンポーネント220は、たとえば、クライアント30の一時的なメモリまたは永続的なストレージ内で、文書レンダリング・アプリケーション202によって受信されたページレットをキャッシュすることになり、その結果、以下でより詳細に論じられるように、ユーザが、たとえば、現在レンダリングされているウェブ・ページを再ロードする、または、現在レンダリングされているウェブ・ページから離れ、別の1つまたは複数のウェブ・ページへとナビゲートして、次いで以前にレンダリングされたウェブ・ページに戻るのを所望するときに、これらのリソースのうちの1つまたは複数が利用され得る。いくつかの実施形態において、デバイス・キャッシュ・コンポーネント220は、ページレットがキャッシュ可能であるか否か、ページレットが以前にキャッシュされているか否か、ページレットはいつ以前にキャッシュされたか、および/または、キャッシュされたページレットがサーバ22上で更新されており、したがってクライアント30上で更新される予定であってよいか否かなどの、情報を記憶することができる。
特定の実施形態において、各ページレットは、クライアント30によって受信されると、ページ・アセンブル・プロセス208を呼び出すように構成された関数呼び出しを含むか、または関数呼び出しのフォーマットである。特定の実施形態において、ページ・アセンブル・プロセス208は、続いて受信される二次応答における関数呼び出しによって呼び出されることになるか、または呼び出されうる(たとえば、JavaScript)関数を含む関数ライブラリ(たとえば、JavaScript関数ライブラリ)を含む。特定の実施形態において、各ページレットは、対応する関数呼び出しを実装するためのスクリプトを含む任意のマークアップ言語コード(たとえば、HTML)を含み、それが、ページ・アセンブル・プロセス208の関数ライブラリによって要求される関数を識別する。特定の実施形態において、各関数呼び出しは、例として、HTMLまたは他のマークアップ言語コード、JavaScriptリソースのアレイ、CSSリソースのアレイ、および、ページレットが表示され、ページレットにおいて識別されたリソースがダウンロードされた後で実行されることになる、(たとえば、JavaScript)スクリプトまたはコード・セグメントのリストを含むレジスタを含む、1つまたは複数のコールバック関数にラッピングされている1つまたは複数の引数を含む。
特定の実施形態において、各関数呼び出しは、ページレットのいくつかのプロパティを記述するいくつかのメタデータをさらに含み、それらはページレットの相対優先度を決定するために、ページ・アセンブル・プロセス208によって使用されてよい。これは、二次応答において受信されたページレットの各々の相対表示順序をスケジュールするように、ページ・アセンブル・プロセス208をイネーブルにする。例として、いくつかのページレットは、クリティカルではないこと、または他の特徴もしくはコンテンツほどクリティカルではないことを予め決定された特徴をイネーブルにすることができ、したがって、これらのページレットは、他のよりクリティカルなページレットの後でレンダリングされてよい。単純な一実装形態において、各関数呼び出しは、「遅延フラグ」をさらに含む。この遅延フラグが真に設定されるとき、これは、ページ・アセンブル・プロセス208に、そのページレットが相対的にクリティカルでないこと、ならびに、DOM表現212の中へのその挿入および文書レンダリング・アプリケーション202による続くレンダリングが、他のより高い優先度ページレットが挿入されてレンダリングされるまで、遅延されてもよいことを命令する。より具体的には、かつ以下でより詳細に説明されるように、各ページレット・コールバック関数は、クライアント30で受信されるとき、他のより高い優先度ページレット・コールバック関数が処理される、または実行されるまで、キュー214に保持されてよい。しかしながら、いくつかの実施形態では、より高い優先度ページレットがキュー212に存在しない場合、より低い優先度ページレット・コールバック関数が処理されてよい。
特定の実施形態において、上で説明されたように、二次応答において受信された特定のページレットのコンテンツをDOM表現212の中に挿入するために、ページ・アセンブル・プロセス208は、DOM表現212において、対応するプレース・ホルダDOMノードを識別しなげればならない。特定の実施形態において、これは、ページ・サービング・プロセス206により、各プレース・ホルダを有する識別子(ID)パラメータを、ベース構造化文書に含めることによって達成される。同様に、ページ生成プロセス210によって生成された各ページレットは、ページレットのコンテンツが、その中に挿入されることになる、またはそこで交換されることになるDOM表現212において、一致する、または対応するプレース・ホルダDOMノードを識別するために、ページ・アセンブル・プロセス208によって使用可能なIDパラメータを含む。構造化文書の生成および配布に関するさらなる詳細は、その全体において本願明細書に援用する、米国特許出願第12/754,549号に見出されてよい。
次にページレットをサーブするための方法が、図4Aのフローチャートを参照して説明される。上で説明されたように、ウェブ・ページ要求に応答して、306でのベース構造化文書の生成、または308での初期応答の送信の後に、またはそれと並行して、ウェブ・ページ・サービング・プロセス206は、310で、ページ生成プロセス210を起動し、ページ生成プロセス210に、要求されたウェブ・ページの残りを生成するように命令する。特定の実施形態において、要求されたウェブ・ページが以前にレンダリングされている場合、およびしたがって、ウェブ・ページのレンダリングの使用のためにクライアント30によってキャッシュされている、またはキャッシュに記憶されている対応するページレットを有する場合(「キャッシュ・ヒット」)、ウェブ・ページ・サービング・プロセス206は、クライアント30に、キャッシュされたリソースを使用して、少なくとも部分的にページレットをレンダリングするように命令する。例として、図4Aを参照すると、クライアント・デバイス30が以前にレンダリングされているウェブ・ページを要求するとき、402で、ウェブ・ページ・サービング・プロセス206は、キャッシュ・ヒットが存在するか否かを最初に決定する。すなわち、要求されたウェブ・ページが以前にクライアント30によってレンダリングされ、キャッシュに記憶されている場合、ウェブ・ページ・サービング・プロセス206は、ウェブ・ページのレンダリングに使用されることになる、キャッシュに記憶された1つもしくは複数のページレットまたはページレ
ット・リソースを識別することができる。例示的な一実施形態において、キャッシュ・ヒットが存在しない場合、本明細書で説明されたように、ウェブ・ページ・サービング・プロセス206は、ページ生成プロセス210を起動し、ページ生成プロセス210に、要求されたウェブ・ページの残りを生成するように命令する。
特定の実施形態において、ウェブ・ページ・サービング・プロセス206は、ウェブ・ページを求める要求がいつサーバに送信されたか、1つまたは複数の応答がいつサーバ22から提供されたか、および/または、ウェブ・ページがいつクライアント30によってレンダリングされたかを示すタイムスタンプを記憶することができる。キャッシュに記憶された1つまたは複数のページレットが識別された後で、ウェブ・ページ・サービング・プロセス206は、キャッシュされたページレットのうちのいくつかまたはすべてが、期限切れである、したがって古すぎることを決定することができる。たとえば、404で、ウェブ・ページ・サービング・プロセス206は、ウェブ・ページを求める現在の要求のタイムスタンプと、ウェブ・ページを求めた以前の要求が行われたタイムスタンプとを比較して、現在の要求についてのタイムスタンプと以前の要求についてのタイムスタンプとの間で経過した時間が、予め決定されたしきい値時間を超えているか否かを決定することができる。予め決定されたしきい値時間は、任意の所望される時間であってよく、たとえば、限定されるものでないが、5分であってよい。
特定の実施形態において、システム・キャッシュ・コンポーネント218は、追加的なデータを書き込むなどの、デバイス30のキャッシュに記憶されているページレットに実施される、1つまたは複数の状態変化動作を監視、および/または記録することができる。例として、システム・キャッシュ・コンポーネント218は、状態変化動作(一実施形態において、埋め込まれたスクリプトにおいてオブジェクトとして具体化される)を、動作が実施されたページレットについて記憶された対応するデータ・オブジェクト内に埋め込まれたスクリプトによって登録されたコールバック関数に関連付けて、記憶することができる。このようにして、ユーザが、動作が実施されたページからナビゲートして離れ、後で動作が実施されたページにナビゲートして戻るとき、システム・キャッシュ・コンポーネント218は、ウェブ・ページ生成206に、コールバック関数を二次応答部分としてクライアント30に送るように命令することができ、次いでクライアント30は、キャッシュされたページのコンテキストにおいて動作を再実行する。状態変化動作が以前に実施されているページについてのキャッシュ・ヒットに応答して、本明細書で論じられるように、ページ生成プロセス208は、対応するデータ・オブジェクトにアクセスし、ページについてのキャッシュされたリソースを再ロードする、または再実行することができる。いくつかの実施形態において、ウェブ・ページ・サービング・プロセス206またはシステム・キャッシュ・コンポーネントは、受信された状態変化情報に少なくとも部分的に基づいて、キャッシュされたページレットが古すぎることを決定することができる。
特定の実施形態において、404で、キャッシュされたページレットが古すぎないことが決定された場合、406で、図5を参照して以下でさらに論じられるように、ウェブ・ページ・サービング・プロセス206は、キャッシュから、ページレットのうちのいくつかまたはすべてをレンダリングするようクライアント30に命令する。たとえば、ウェブ・ページ・サービング・プロセス206は、ページレットをレンダリングするために使用されることになるリソースのうちのいくつかまたはすべてがキャッシュに記憶されていることを示す二次応答を、クライアント30に送ることができる。
特定の実施形態において、408で、クライアント30がキャッシュからページレットのうちのいくつかまたはすべてをレンダリングすると、図4Bおよび図4Cを参照して以下でさらに論じられるように、ウェブ・ページ・サービング・プロセス206は、ページ生成プロセス210に、ページレットをリフレッシュするように命令する。いくつかの実
施形態において、ウェブ・ページ・サービング・プロセス206は、ページレットをリフレッシュするためのクライアント30による要求に応答して、ページレットがリフレッシュされる。
特定の実施形態において、キャッシュされたページレットが古すぎることが決定された場合、410で、ウェブ・ページ・サービング・プロセス206は、ページ生成プロセスに、いずれのキャッシュされたリソースも利用せずに、新しいページレットとしてページレットを生成するように命令する。412で、ウェブ・ページ・サービング・プロセスは、たとえば、本明細書で論じられたように、クライアント30への二次応答の一部としてページレットをキャッシュに送ることによって、キャッシュからではなく、410で生成されたページレットを使用してウェブ・ページをレンダリングするようクライアント30に命令する。
次に、ページレットをリフレッシュするための例示的な方法が、図4Bのフローチャートを参照して説明される。ウェブ・ページ・サービング・プロセス206は、ページ生成プロセス210に、キャッシュから少なくとも部分的にレンダリングされているページレットを、リフレッシュするように命令する。例として、クライアント30は、ページ、より具体的にはページレットが、クライアント30によって最後にレンダリングされた後、変更されている対応するアプリケーションによって必要とされるリソースについて、増分更新を要求することができる。特定の実施形態において、ページレット関数呼び出しは、要求内の対応するアプリケーションをレンダリングするために必要とされるリソースについての対応するタイムスタンプを含む。特定の実施形態において、ウェブ・ページ・サービング・プロセス206および/またはシステム・キャッシュ・コンポーネント218は、対応するタイムスタンプに基づいて、リソースがクライアント30に最後に送信され、レンダリングされた後、対応するリソースに対する更新があったか否かを決定することができる。
特定の実施形態において、420で、たとえば、要求と共に送信されたタイムスタンプ以降にそれらのリソースが変更している場合、ウェブ・ページ・サービング・プロセス206は、ページ生成プロセス210に、キャッシュされたページレットの1つまたは複数のリソースについて、クライアント30への1つまたは複数の増分更新を生成するように命令する。すなわち、ウェブ・ページが一体としてみなされ、かつウェブ・ページにおけるいずれの変更もクライアント・サイドのキャッシュからページをフラッシュすることをもたらす、従来のキャッシング手順とは対照的に、個々のページレットが、一体のウェブ・ページが再要求されることなく、その対応する関数呼び出しを通じて、増分更新を要求することができる。例として、リソースが変更されている、または更新されている場合、ページ生成プロセス210は、クライアント30でキャッシュされたリソースを更新するために使用される増分データ(または、基礎となるデータへの変更を示す差分データ)を生成することができる。
特定の実施形態において、422で、ページ生成プロセス210からの更新されたリソース(存在する場合)の生成時に、ウェブ・ページ・サービング・プロセス206は、本明細書で論じられたように、たとえば二次応答部分の一部として、更新されたリソースをクライアント30に送ることができる。424で、ウェブ・ページ・サービング・プロセス206は、更新されたリソースおよびキャッシュされたリソースを使用してページをレンダリングするようにクライアント30に命令する。本明細書で論じられたように、たとえば、二次応答部分は、更新されたリソースを、ページ・アセンブル・プロセス208によってページの中に挿入するための命令を含む。例として、これは、更新されたHTMLまたは他のコンテンツを、対応するページレットまたはレンダリングされたページの他のセクションの中に挿入すること、または、ページのレンダリングに使用するために更新さ
れたスクリプトを実行することを伴ってもよい。このようにして、キャッシュされたリソースは、更新されたリソースの生成前に、または少なくとも部分的にそれと並行して、レンダリングされ、ユーザに表示されてよい。更新されたリソースが受信されると、ページ・アセンブル・プロセスは、更新されたリソースを含むページレットをレンダリングすることができる。加えて、二次応答部分は、更新されたリソースを、クライアント30のキャッシュにキャッシュするための命令を含む。
次に、ページレットをリフレッシュするためのさらなる例示的な方法が、図4Cのフローチャートを参照して説明される。キャッシュされたページレットのリソースのために1つまたは複数の増分更新を生成するのではなく、426で、ウェブ・ページ・サービング・プロセス206は、ページ生成プロセス210に、1つまたは複数の新しい置換リソースを生成して、キャッシュされたリソースを新しいバージョンと置換するように命令する。これは、本明細書で説明したように、要求と共に送信されたタイムスタンプ以降にキャッシュされたリソースが変更している場合、および/または、クライアント30からの要求時に、キャッシュされたリソースがウェブ・ページをレンダリングするために使用される度に発生してよい。
特定の実施形態において、428で、ページ生成プロセス210からの新しい置換リソース(存在する場合)の生成時に、ウェブ・ページ・サービング・プロセス206は、本明細書で論じられたように、たとえば、二次応答部分の一部として、更新されたリソースをクライアント30に送ることができる。430で、ウェブ・ページ・サービング・プロセス206は、新しい置換リソースを使用してページをレンダリングするようクライアント30に命令する。本明細書で論じられたように、たとえば、二次応答部分は、新しい置換リソースを、ページ・アセンブル・プロセス208によってページの中に挿入するための命令を含む。例として、これは、対応するページレットもしくはレンダリングされたページの他のセクションのHTMLもしくは他のコンテンツを置換することによって、対応するページレットを置換すること、または、ページのレンダリングに使用するための置換スクリプトを実行することを伴ってもよい。このようにして、キャッシュされたリソースは、置換リソースの生成前に、または少なくとも部分的にそれと並行して、レンダリングされ、ユーザに表示されてよい。置換リソースが受信されると、ページ・アセンブル・プロセスは、置換リソースを使用してページレットをレンダリングすることができる。加えて、二次応答部分は、新しい置換リソースを、クライアント30のキャッシュの中の対応するページレットの箇所にキャッシュするための命令を含む。
次に、ページレットをレンダリングするための方法が、図5のフローチャートを参照して説明される。特定の実施形態において、502で、ページレットが二次応答において受信されるとき、対応する関数呼び出しが、ページ・アセンブル・プロセス208を呼び出す。504で、ページ・アセンブル・プロセスは、単独で、またはデバイス・キャッシュ・コンポーネント220と通信して、受信されたページレットがキャッシュ可能なページレットであるか否かを決定するためのチェックを実施することができる。たとえば、関数呼び出しは、ページレットがキャッシュ可能なリソースを含むことを示すために、フラグなどの命令を含む。例として、キャッシュ可能なリソースは、ナビゲーション・メニュー、ニュース・フィード情報、または、ユーザがウェブ・ページを離れ、その後そのウェブ・ページに戻るときに一般に再ロードされる他のリソースなどの、リソースを含む。いくつかのページレットは、キャッシュ可能なリソースを含まないことがある。たとえば、いくつかのページレットでは、ユーザが同じページに戻る度に異なる広告をレンダリングすることが望ましいことがある、広告を表示するページレットの場合などの、ページがロードされる度に新しいリソースを要求することが望ましいことがある。
特定の実施形態において、504で、デバイス・キャッシュ・コンポーネント220が
、ページレットがキャッシュ可能でないことを決定した場合、506で、ページ・レンダリング・コンポーネント208が、本明細書で説明されたように、ページレットをキャッシュせずに、かつページレットをレンダリングするためにキャッシュされたリソースを全く使用せずに、ページレットのレンダリングを進行することができる。
特定の実施形態において、504で、デバイス・キャッシュ・コンポーネント220が、ページレットがキャッシュ可能であることを決定した場合、508で、デバイス・キャッシュ・コンポーネント220は、受信されたページレットが以前にキャッシュされているか否かを決定するためのチェックを実施することができる。たとえば、関数呼び出しは、ページレットが以前にキャッシュされていることを示すために、フラグなどの命令を含む。加えて、または代替として、デバイス・キャッシュ・コンポーネント220は、各キャッシュされたページレットを、ページレットごとに一意の識別情報で登録し、一意の情報から、ページレットが以前にキャッシュされているか否かを決定することができる。関数呼び出しおよび/またはデバイス・キャッシュ・コンポーネント220はまた、ページレットがいつキャッシュされたかについての情報を含む。
特定の実施形態において、508で、デバイス・キャッシュ・コンポーネント220が、受信されたページレットが以前にキャッシュされていないことを決定した場合、デバイス・キャッシュ・コンポーネント220は、ページレットをクライアント30のキャッシュに記憶することができる。例として、受信されたページレットをキャッシュに記憶することは、ページレットを、マス・ストレージ・ドライブ上などの、クライアント30の永続的なメモリに記憶することを含む。受信されたページレットを記憶することはまた、ページレットを暗号化して、暗号化されたページレットをキャッシュに記憶することを含む。ウェブ・ブラウジング・セッションが終了した後、ページレット・キャッシュ・データが永続的なメモリの中にとどまるのであれば、ページレットを暗号化することは、ページレットをコピーすること、改ざんすること、またはリバース・エンジニアリングすることを防ぐことができる。ページレットを暗号化することは、暗号化ライブラリ、たとえば、限定されるものでないが、Stanford Javascript Crypto Libraryを使用して、ページレット・データを暗号化することを含む。加えて、または代替として、ページレットを記憶することは、ページレットを、クライアント30のシステム・メモリまたはオン・チップ・プロセッサ・キャッシュ・メモリなどの、一時的なメモリに記憶することを含む。506で、ページ・レンダリング・コンポーネント208は次いで、本明細書で説明されたように、ページレットのレンダリングを進行することができる。
特定の実施形態において、508で、デバイス・キャッシュ・コンポーネント220が、受信されたページレットが以前にキャッシュされていることを決定した場合、512で、デバイス・キャッシュ・コンポーネント220は、キャッシュされたページレット、またはキャッシュされたページレットの部分に対応したキャッシュされたリソースを、クライアント30のキャッシュから取り出すことができる。キャッシュされたページレットが暗号化されている場合、キャッシュされたリソースを取り出すことは、ページ生成プロセス208によってキャッシュされたリソースが利用され得る前に、それらを解読することを含む。キャッシュされたリソースが受信されると、506で、ページ・レンダリング・コンポーネント208は、本明細書で説明されたように、キャッシュされたリソースを使用してページレットのレンダリングを進行することができる。
特定の実施形態において、ページレットをレンダリングした後に、または少なくとも部分的にそれと並行して、514で、デバイス・キャッシュ・コンポーネント220は、ページレットのスナップショットを取ることができる。そのようなスナップショットは、受信されたページレットごとに、DOM情報および/または関数呼び出しデータのスナップ
ショットを取ることを含む。スナップショットは、たとえば、ページレットを更新するための要求の一部として、サーバ22に送られてよい。キャッシュされたリソースを使用してレンダリングされたページレットは、本明細書で論じられたように、ページレット・リソースがキャッシュされた後に追加されている新しい情報を含むように、リフレッシュされてよい。このようにして、キャッシュされたページレットは、レンダリングされ、ユーザに表示されてよく、キャッシュされたページレットをレンダリングした後に、または少なくとも部分的にそれと並行して、ページレットは、存在する場合、新しい情報を含むように、リフレッシュされてよい。したがって、ページレット・リソースが、キャッシュから取り出されるのではなく、すべてサーバからダウンロードされた場合に比べ、ユーザは、ページレットが早くロードされるのを体感することができる。
特定の実施形態において、506で、本明細書で論じられたように、受信されたページレットおよび/またはキャッシュされたリソースは、ページ・アセンブル・プロセス208に送られており、ページ・アセンブル・プロセス208は次いで、対応するページレット・コールバック関数をキュー214に入れることができ、キュー214は既に、以前の二次応答において受信された、以前に受信されたページレットに対応したページレット・コールバック関数を保有していることがある。ページレットをレンダリングすること、およびページレットをウェブ・ページの中に挿入することを含む、ページレット・コールバック関数を取り扱うことに関するさらなる詳細は、たとえば、その全体において本願明細書に援用する、米国特許出願第12/754,549号に見出されてよい。
特定の実施形態において、デバイス30のキャッシュは、定期的に、または一定のイベントの後で、消去されてよい。たとえば、デバイス・キャッシュ・コンポーネント220は、キャッシュを消去するためのユーザからの命令時に、キャッシュを消去するように構成されてよい。加えて、または代替として、デバイス・キャッシュ・コンポーネントは、ユーザがウェブ・サイトからログ・オフするとき、またはユーザがウェブ・サイトにログ・オンした後一定の時間期間が経過したとき、またはキャッシュが作成されたときなどの一定のイベントの後で、キャッシュを消去するように構成されてもよい。
本明細書で説明されたように、説明されたプロセスまたは方法のうちのいずれかは、実行されたときに、1つまたは複数のプロセッサに、上で説明された動作を実装させるように動作可能な、有形のデータ記憶媒体上もしくは有形のデータ記憶媒体内で具体化される、またはエンコードされる、一連のコンピュータ可読命令として実装されてよい。より小さなデータセットの場合、上で説明された動作は、単一のコンピューティング・プラットフォームまたはノード上で実行され得る。例として、特定の実施形態において、図2および図3を参照して上で説明された段階的な生成プロセスは、サーバ22で実行される単一のサーバ・プロセスによって実装されてよい。すなわち、上で説明されたウェブ・ページ生成プロセスおよびサービング・プロセスは、サーバ22上で実装されてよい。より大規模なシステムおよびその結果としてのデータセットの場合は、パラレル・コンピューティング・プラットフォームが使用されてもよい。
図1は、1つのマスタ・サーバ22aおよび2つのスレーブ・サーバ22bからなる、例示的な分散コンピューティング・システムを示す。いくつかの実施形態において、分散コンピューティング・システムは、商品サーバの高可用性クラスタを備え、そこでは、スレーブ・サーバが通常ノードと呼ばれる。2つのノードのみが図1に示されているが、いくつかの実施形態において、ノードの数は、百、または千、あるいはそれ以上さえも優に超えることがある。普通、高可用性クラスタにおけるノードは、冗長であり、その結果、1つのノードが特定のアプリケーションを実施中に異常終了した場合、クラスタ・ソフトウェアが、1つまたは複数の他のノード上でアプリケーションを再開することができる。
多数のノードはまた、大規模データベースのパラレル処理を促進する。いくつかの実施形態において、22aなどのマスタ・サーバは、クライアントからジョブを受信し、次いでそのジョブから生じるタスクを、サーバ22bなどのスレーブ・サーバ、すなわちノードに割り当て、スレーブ・サーバ、すなわちノードが、マスタからの命令時に、割り当てられたタスクを実行する実際の作業を行い、タスク間でデータを移動させる。いくつかの実施形態において、上で論じられたように、クライアント・ジョブは、HadoopのMapReduce機能を呼び起こすことになる。
同様に、いくつかの実施形態において、サーバ22aなどのマスタ・サーバは、大規模データベースのパラレル処理をサポートする分散ファイル・システムを左右する。特に、マスタ・サーバ22aは、ファイル・システムの名前空間、およびノードへのブロック・マッピング、ならびに、サーバ22bなどのスレーブ・サーバ、すなわちノード上に実際に記憶されたファイルへのクライアント・アクセスを管理する。続いて、いくつかの実施形態において、スレーブ・サーバは、クライアントからの読み出し要求および書き込み要求を実行する実際の作業を行い、マスタ・サーバからの命令時に、ブロック作成、削除、および複製を実施する。
上述したプロセスおよび機構は、広く多様な物理システムによって、かつ広く多様なネットワーク環境およびコンピューティング環境において実装され得るが、以下で説明されるサーバまたはコンピューティング・システムは、限定する目的ではなく、教説の目的のために、例示的なコンピューティング・システム・アーキテクチャを提供する。
図6は、サーバ22a、22b、またはクライアント・デバイス30を実装するために使用され得る、例示的なコンピューティング・システム・アーキテクチャを示す。一実施形態において、ハードウェア・システム600は、プロセッサ602と、キャッシュ・メモリ604と、有形なコンピュータ可読媒体上に記憶され、本明細書で説明された機能を対象とする、1つまたは複数の実行可能なモジュールおよびドライバを備える。加えて、ハードウェア・システム600は、高性能入力/出力(I/O)バス606と、標準I/Oバス608とを含む。ホスト・ブリッジ610が、プロセッサ602を高性能I/Oバス606に結合し、一方で、I/Oバス・ブリッジ612が、2つのバス606および608を互いに結合する。システム・メモリ614、および1つまたは複数のネットワーク/通信インターフェース616は、バス606に結合する。ハードウェア・システム600は、ビデオ・メモリ(図示せず)、およびビデオ・メモリに結合された表示デバイスをさらに含む。マス・ストレージ618およびI/Oポート620が、バス608に結合する。ハードウェア・システム600は、オプションで、キーボードおよびポインティング・デバイス、ならびにバス608に結合された表示デバイス(図示せず)を含む。一括して、これらの要素は、広範なカテゴリのコンピュータ・ハードウェア・システムを表現するように意図されており、システムは、限定はされないが、米国カリフォルニア州サンタ・クララのインテル・コーポレーション(Intel Corporation)によって製造されたx86互換プロセッサ、および米国カリフォルニア州サニーベールのアドバンスト・マイクロ・デバイス(AMD:Advanced Micro Devices)インコーポレイティッドによって製造されたx86互換プロセッサ、ならびに任意の他の好適なプロセッサに基づいた、汎用コンピュータ・システムを含む。
ハードウェア・システム600の要素が、以下でより詳細に説明される。特に、ネットワーク・インターフェース616は、ハードウェア・システム600と、イーサネット(登録商標)(たとえば、IEEE802.3)ネットワーク、バックプレーン、その他などの幅広いネットワークのうちのいずれかとの間に、通信を提供する。マス・ストレージ618は、サーバ22a、22bで実装される上で説明された機能を実施するように、データおよびプログラミング命令のための持続的なストレージを提供し、一方で、システム
・メモリ614(たとえば、DRAM)は、プロセッサ602によって実行されるときに、データおよびプログラミング命令のための一時的なストレージを提供する。I/Oポート620は、ハードウェア・システム600に結合され得る追加的な周辺デバイス同士の間に通信を提供する、1つまたは複数のシリアルおよび/またはパラレル通信ポートである。
ハードウェア・システム600は、多様なシステム・アーキテクチャを含むことができ、ハードウェア・システム600のさまざまなコンポーネントは、再配列されてもよい。たとえば、クライアント30のキャッシュ604は、プロセッサ602とオン・チップで実装されてもよい。代替として、キャッシュ604は、クライアント30のシステム・メモリ614で実装されてもよい。このようにして、プロセッサ・チップ上で、またはシステム・メモリ614で実装されるキャッシュ604は、一般に、一時的なストレージで実装されてよい。さらなる代替として、キャッシュ604は、永続的なストレージ・デバイスであってよい、クライアント30のマス・ストレージ618で実装されてもよい。
さらに、開示された主題の一定の実施形態は、上のコンポーネントのすべてを要さなくてもよいし、含まなくてもよい。たとえば、標準I/Oバス508に結合されて示される周辺デバイスは、高性能I/Oバス606に結合してもよい。その上、いくつかの実施形態において、ハードウェア・システム600のコンポーネントが単一のバスに結合されている、単一のバスのみが存在してもよい。さらに、ハードウェア・システム600は、追加的なプロセッサ、ストレージ・デバイス、またはメモリなどの、追加的なコンポーネントを含む。
一実装形態において、本明細書で説明された実施形態の動作は、分散コンピューティング環境において、個々に、または一括して、ハードウェア・システム600によって稼働される一連の実行可能なモジュールとして実装される。特定の一実施形態において、一組のソフトウェア・モジュールおよび/またはドライバが、ネットワーク通信プロトコル・スタック、パラレル・コンピューティング機能、ブラウジングおよび他のコンピューティング機能、最適化プロセス、その他を実装する。上述した機能モジュールは、ハードウェア、コンピュータ可読媒体上に記憶された実行可能なモジュール、またはその両方の組合せによって実現されてよい。たとえば、機能モジュールは、プロセッサ602などの、ハードウェア・システムのプロセッサによって実行されることになる、複数の、または一連の命令を備えることができる。最初に、一連の命令は、マス・ストレージ618などのストレージ・デバイス上に記憶されてよい。しかしながら、一連の命令は、ディスケット、CD−ROM、ROM、EEPROM、その他などの任意の好適な記憶媒体上に明白に記憶されてもよい。さらに、一連の命令は、ローカルに記憶される必要はなく、ネットワーク/通信インターフェース616を通じて、ネットワーク上のサーバなどのリモート・ストレージ・デバイスから受信されることも可能である。命令は、マス・ストレージ618などのストレージ・デバイスから、メモリ614の中にコピーされ、次いでプロセッサ602によってアクセスされ、実行される。
オペレーティング・システムは、ソフトウェア・アプリケーション(図示せず)へのデータの入力、およびソフトウェア・アプリケーションからのデータの出力を含む、ハードウェア・システム600の動作を管理し、制御する。オペレーティング・システムは、システム上で実行されているソフトウェア・アプリケーションと、システムのハードウェア・コンポーネントとの間に、インターフェースを提供する。リナックス(登録商標)(LINUX(登録商標))オペレーティング・システム、米国カリフォルニア州クパチーノのアップル・コンピュータ・インコーポレイティッド(Apple Computer Inc.)から利用可能なアップル・マッキントッシュ・オペレーティング・システム、UNIX(登録商標)オペレーティング・システム、Microsoft(登録商標)W
indows(登録商標)オペレーティング・システム、BSDオペレーティング・システム、その他などの、任意の好適なオペレーティング・システムが使用されてよい。当然ながら、他の実装形態も可能である。たとえば、本明細書で説明された機能が、ファームウェアで、または特定用途向け集積回路上で実装されてもよい。
さらに、上で説明された要素および動作は、記憶媒体上に記憶された命令からなってもよい。命令は、処理システムによって取り出され、実行されてよい。命令のいくつかの例は、ソフトウェア、プログラム・コード、およびファームウェアである。記憶媒体のいくつかの例は、メモリ・デバイス、テープ、ディスク、集積回路、およびサーバである。命令は、処理システムによって実行されるときに、処理システムに、開示された主題と一致して動作するよう指示するように動作できる。用語「処理システム」は、単一の処理デバイス、または相互動作できる処理デバイスのグループを指す。処理デバイスのいくつかの例が、集積回路および論理回路である。当業者は、命令、コンピュータ、および記憶媒体に精通している。
本開示は、当業者が理解するであろう、本明細書の例示的な実施形態に対するすべての変更形態、代用形態、変形形態、改変形態、および修正形態を包含する。同様に、適切である場合、添付の特許請求の範囲は、当業者が理解するであろう、本明細書の例示的な実施形態に対するすべての変更形態、代用形態、変形形態、改変形態、および修正形態を包含する。例として、本開示の実施形態は、ソーシャル・ネットワーキング・ウェブサイトと関連して動作するように説明されてきたが、開示された本主題のさまざまな実施形態は、ウェブ・アプリケーションをサポートする任意の通信施設と関連して使用されてもよい。さらに、いくつかの実施形態において、用語「ウェブ・サービス」と「ウェブ・サイト」とは、区別なく使用されることがあり、加えて、サーバに直接API呼び出しを行うモバイル・デバイス(たとえば、セルラー・フォン、スマート・フォン、パーソナルGPS、携帯情報端末、パーソナル・ゲーム・デバイス、その他)などのデバイス上の、カスタムAPIまたは一般化されたAPIに及ぶ。

Claims (18)

  1. サーバ・コンピューティング・システムが、ウェブ・ページを求める要求をクライアント・コンピューティング・デバイスから受信する工程と、
    前記サーバ・コンピューティング・システムが、キャッシュに記憶されている1以上のリソース部分を識別する工程であって、各リソース部分は、要求された前記ウェブ・ページをレンダリングするために前記クライアント・コンピューティング・デバイスによる使用のための構造化文書の部分に対応している、工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスが、前記ウェブ・ページを求めた以前の要求後、予め決定されたしきい値時間内に前記ウェブ・ページを要求したか否かを決定する工程と、
    前記クライアント・コンピューティング・デバイスが前記予め決定されたしきい値時間内に前記ウェブ・ページを要求した場合、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、前記キャッシュに記憶されている前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングする、ページレンダリング工程を行うように命令する工程と、
    前記1以上のリソース部分をリフレッシュする工程であって、
    存在する場合、前記1以上のリソース部分について差分データを生成する工程であって、前記1以上のリソース部分についての差分データは、前記1以上のリソース部分に対して変更が行われたことを示す、工程と、
    前記差分データの生成と並行して、前記1以上のリソース部分をレンダリングするように前記クライアント・コンピューティング・デバイスに命令する工程と、
    前記差分データを前記クライアント・コンピューティング・デバイスに送信する工程と、
    前記差分データに基づいて、前記キャッシュに記憶されている前記リソース部分を更新するように、および、更新された前記リソース部分をレンダリングするように、前記クライアント・コンピューティング・デバイスに命令する工程と、を含む、リフレッシュ工程と、
    前記クライアント・コンピューティング・デバイスが、前記予め決定されたしきい値時間内に前記ウェブ・ページを要求しなかった場合、
    前記サーバ・コンピューティング・システムが、前記1以上のリソース部分を再生成
    する工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、再生成された前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングし、再生成された前記1以上のリソース部分をキャッシュするように命令する工程と、を備える方法。
  2. 前記1以上のリソース部分が前記キャッシュに最後に記憶された後、前記1以上のリソース部分の状態に影響するユーザ・イベントが発生したか否かを決定する工程と、
    前記ユーザ・イベントが発生した場合、前記1以上のリソース部分の前記状態に影響する前記ユーザ・イベントに基づいて、前記キャッシュに記憶される前記1以上のリソース部分を再生成する工程と、をさらに備える、請求項1に記載の方法。
  3. 前記キャッシュは、前記クライアント・コンピューティング・デバイスの永続的なストレージに記憶される、請求項1に記載の方法。
  4. 前記1以上のリソース部分が暗号化フォーマットで前記キャッシュに記憶され、前記ページレンダリング工程は、前記1以上のリソース部分を解読する工程を備える、請求項に記載の方法。
  5. ユーザ・イベントに応答して前記キャッシュを消去する工程をさらに備える、請求項に記載の方法。
  6. 前記ユーザ・イベントは、前記ウェブ・ページが要求されたウェブ・サイトからログ・オフすることを含む、請求項に記載の方法。
  7. サーバ・コンピューティング・システムに関連付けられている1以上のコンピューティング・デバイスであって、前記コンピューティング・デバイスは、
    1以上のプロセッサと、
    ソフトウェアを具体化する1以上のコンピュータ読み取り可能な非一時的記憶媒体と
    を備え、前記プロセッサのうちの1以上によって実行されるとき、前記ソフトウェアは、
    前記サーバ・コンピューティング・システムが、ウェブ・ページを求める要求をクライアント・コンピューティング・デバイスから受信する工程と、
    前記サーバ・コンピューティング・システムが、キャッシュに記憶されている1以上のリソース部分を識別する工程であって、各リソース部分は、要求された前記ウェブ・ページをレンダリングするために前記クライアント・コンピューティング・デバイスによる使用のための構造化文書の部分に対応している、工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスが、前記ウェブ・ページを求めた以前の要求後、予め決定されたしきい値時間内に前記ウェブ・ページを要求したか否かを決定する工程と、
    前記クライアント・コンピューティング・デバイスが前記予め決定されたしきい値時間内に前記ウェブ・ページを要求した場合、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、前記キャッシュに記憶されている前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングする、ページレンダリング工程を行うように命令する工程と、
    前記1以上のリソース部分をリフレッシュする工程であって、
    存在する場合、前記1以上のリソース部分について差分データを生成する工程であって、前記1以上のリソース部分についての差分データは、前記1以上のリソース部分に対して変更が行われたことを示す、工程と、
    前記差分データの生成と並行して、前記1以上のリソース部分をレンダリングする
    ように前記クライアント・コンピューティング・デバイスに命令する工程と、
    前記差分データを前記クライアント・コンピューティング・デバイスに送信する工程と、
    前記差分データに基づいて、前記キャッシュに記憶されている前記リソース部分を更新するように、および、更新された前記リソース部分をレンダリングするように、前記クライアント・コンピューティング・デバイスに命令する工程と、を含む、リフレッシュ工程と、
    前記クライアント・コンピューティング・デバイスが、前記予め決定されたしきい値時間内に前記ウェブ・ページを要求しなかった場合、
    前記サーバ・コンピューティング・システムが、前記1以上のリソース部分を再生成する工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、再生成された前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングし、再生成された前記1以上のリソース部分をキャッシュするように命令する工程と、が行われるように構成されている、コンピューティング・デバイス。
  8. 前記ソフトウェアは、
    前記1以上のリソース部分が前記キャッシュに最後に記憶された後、前記1以上のリソース部分の状態に影響するユーザ・イベントが発生したか否かを決定する工程と、
    前記ユーザ・イベントが発生した場合、前記1以上のリソース部分の前記状態に影響する前記ユーザ・イベントに基づいて、前記キャッシュに記憶される前記1以上のリソース部分を再生成する工程と、が行われるようにさらに構成されている、請求項に記載のコンピューティング・デバイス。
  9. 前記キャッシュは、前記クライアント・コンピューティング・デバイスの永続的なストレージに記憶される、請求項に記載のコンピューティング・デバイス。
  10. 前記1以上のリソース部分が暗号化フォーマットで前記キャッシュに記憶され、
    前記ソフトウェアは、前記ページレンダリング工程が、前記1以上のリソース部分を解読する工程によって行われるようにさらに構成されている、請求項に記載のコンピューティング・デバイス。
  11. 前記ソフトウェアは、ユーザ・イベントに応答して前記キャッシュを消去する工程が行われるようにさらに構成されている、請求項に記載のコンピューティング・デバイス。
  12. 前記ユーザ・イベントは、前記ウェブ・ページが要求されたウェブ・サイトからログ・オフすることを含む、請求項11に記載のコンピューティング・デバイス。
  13. ソフトウェアを具体化する1以上のコンピュータ読み取り可能な非一時的記憶媒体であって、実行されるとき、前記ソフトウェアは、
    サーバ・コンピューティング・システムが、ウェブ・ページを求める要求をクライアント・コンピューティング・デバイスから受信する工程と、
    前記サーバ・コンピューティング・システムが、キャッシュに記憶されている1以上のリソース部分を識別する工程であって、各リソース部分は、要求された前記ウェブ・ページをレンダリングするために前記クライアント・コンピューティング・デバイスによる使用のための構造化文書の部分に対応している、工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスが、前記ウェブ・ページを求めた以前の要求後、予め決定されたしきい値時間内に前記ウェブ・ページを要求したか否かを決定する工程と、
    前記クライアント・コンピューティング・デバイスが前記予め決定されたしきい値時間内に前記ウェブ・ページを要求した場合、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、前記キャッシュに記憶されている前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングする、ページレンダリング工程を行うように命令する工程と、
    前記1以上のリソース部分をリフレッシュする工程であって、
    存在する場合、前記1以上のリソース部分について差分データを生成する工程であって、前記1以上のリソース部分についての差分データは、前記1以上のリソース部分に対して変更が行われたことを示す、工程と、
    前記差分データの生成と並行して、前記1以上のリソース部分をレンダリングするように前記クライアント・コンピューティング・デバイスに命令する工程と、
    前記差分データを前記クライアント・コンピューティング・デバイスに送信する工程と、
    前記差分データに基づいて、前記キャッシュに記憶されている前記リソース部分を更新するように、および、更新された前記リソース部分をレンダリングするように、前記クライアント・コンピューティング・デバイスに命令する工程と、を含む、リフレッシュ工程と、
    前記クライアント・コンピューティング・デバイスが、前記予め決定されたしきい値時間内に前記ウェブ・ページを要求しなかった場合、
    前記サーバ・コンピューティング・システムが、前記1以上のリソース部分を再生成する工程と、
    前記サーバ・コンピューティング・システムが、前記クライアント・コンピューティング・デバイスに、再生成された前記1以上のリソース部分を使用して、要求された前記ウェブ・ページをレンダリングし、再生成された前記1以上のリソース部分をキャッシュするように命令する工程と、が行われるように構成されている、媒体。
  14. 前記ソフトウェアは、
    前記1以上のリソース部分が前記キャッシュに最後に記憶された後、前記1以上のリソース部分の状態に影響するユーザ・イベントが発生したか否かを決定する工程と、
    前記ユーザ・イベントが発生した場合、前記1以上のリソース部分の前記状態に影響する前記ユーザ・イベントに基づいて、前記キャッシュに記憶される前記1以上のリソース部分を再生成する工程と、が行われるようにさらに構成されている、請求項13に記載の媒体。
  15. 前記キャッシュは、前記クライアント・コンピューティング・デバイスの永続的なストレージに記憶される、請求項13に記載の媒体。
  16. 前記1以上のリソース部分が暗号化フォーマットで前記キャッシュに記憶され、
    前記ソフトウェアは、前記ページレンダリング工程が、前記1以上のリソース部分を解読する工程によって行われるようにさらに構成されている、請求項15に記載の媒体。
  17. 前記ソフトウェアは、ユーザ・イベントに応答して前記キャッシュを消去する工程が行われるようにさらに構成されている、請求項15に記載の媒体。
  18. 前記ユーザ・イベントは、前記ウェブ・ページが要求されたウェブ・サイトからログ・オフすることを含む、請求項17に記載の媒体。
JP2015560286A 2013-03-01 2014-02-27 構造化文書のページレットのキャッシング Active JP6159424B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/782,937 US9626343B2 (en) 2010-04-05 2013-03-01 Caching pagelets of structured documents
US13/782,937 2013-03-01
PCT/US2014/018827 WO2014134234A1 (en) 2013-03-01 2014-02-27 Caching pagelets of structured documents

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017114072A Division JP6484667B2 (ja) 2013-03-01 2017-06-09 構造化文書のページレットのキャッシング

Publications (3)

Publication Number Publication Date
JP2016519346A JP2016519346A (ja) 2016-06-30
JP2016519346A5 JP2016519346A5 (ja) 2017-03-23
JP6159424B2 true JP6159424B2 (ja) 2017-07-05

Family

ID=51428785

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015560286A Active JP6159424B2 (ja) 2013-03-01 2014-02-27 構造化文書のページレットのキャッシング
JP2017114072A Active JP6484667B2 (ja) 2013-03-01 2017-06-09 構造化文書のページレットのキャッシング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017114072A Active JP6484667B2 (ja) 2013-03-01 2017-06-09 構造化文書のページレットのキャッシング

Country Status (6)

Country Link
JP (2) JP6159424B2 (ja)
KR (2) KR101962301B1 (ja)
AU (1) AU2014223495B2 (ja)
CA (1) CA2902200C (ja)
IL (1) IL240800B (ja)
WO (1) WO2014134234A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170147543A1 (en) * 2015-11-25 2017-05-25 International Business Machines Corporation Enabling legacy web applications for mobile devices
US9378178B1 (en) 2015-11-30 2016-06-28 International Business Machines Corporation Enhancing HTTP caching by allowing content sharing of data blocks across resources identified by different uniform resource locators
KR101727272B1 (ko) * 2016-01-19 2017-04-17 쉬프트정보통신 주식회사 자바스크립트 언어 기반의 비동기 통신 환경에서 클라이언트와 서버 사이의 대용량 데이터 분할 전송 및 처리 방법
US20170269893A1 (en) * 2016-03-16 2017-09-21 Google Inc. Remote rendering of locally displayed content
US10469611B2 (en) 2016-05-03 2019-11-05 Microsoft Technology Licensing, Llc Reduced page load time utilizing cache storage
US10789262B2 (en) 2017-05-16 2020-09-29 Sap Se Progressive chart rendering
CN107766532A (zh) * 2017-10-27 2018-03-06 深圳市行云易通科技有限公司 一种前端Node.js自动化正静态方法
US11170067B2 (en) 2017-12-13 2021-11-09 Google Llc Methods, systems, and media for updating a webpage rendered with cached content
CN112765507B (zh) * 2021-01-27 2023-12-26 上海淇玥信息技术有限公司 一种页面首屏渲染与资源加载方法、装置和电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298356B1 (en) * 1998-01-16 2001-10-02 Aspect Communications Corp. Methods and apparatus for enabling dynamic resource collaboration
CA2313802A1 (en) * 2000-07-11 2002-01-11 Michael Corcoran Dynamic web page caching system and method
JP2004504681A (ja) * 2000-07-17 2004-02-12 エプリケーション ネットワークス リミテッド キャッシュ分散ネットーク上に静的及び動的コンテンツをキャッシュすることによる、WWWサイトのビット・レートの節約及びQoS改善
US7376653B2 (en) 2001-05-22 2008-05-20 Reuters America, Inc. Creating dynamic web pages at a client browser
US7594001B1 (en) * 2001-07-06 2009-09-22 Microsoft Corporation Partial page output caching
JP4413655B2 (ja) * 2004-03-08 2010-02-10 ソニー・エリクソン・モバイルコミュニケーションズ株式会社 コンテンツ閲覧システム、通信制御ユニット、携帯通信端末及びコンテンツ閲覧方法
JP5013789B2 (ja) * 2006-09-12 2012-08-29 ヤフー株式会社 ウェブページ生成システム、ウェブページ生成装置、およびウェブページ生成方法
US8725719B2 (en) * 2007-02-13 2014-05-13 Microsoft Corporation Managing web page links using structured data
US8504775B2 (en) * 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US20100131585A1 (en) * 2008-11-21 2010-05-27 Daniel Rodrigue Displaying information in a client/server system
US8448090B2 (en) 2009-01-23 2013-05-21 Hewlett-Packard Development Company, L.P. Selective plug-in activation for resource-limited platforms
US20110055683A1 (en) 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages
US20130117252A1 (en) * 2011-11-09 2013-05-09 Google Inc. Large-scale real-time fetch service

Also Published As

Publication number Publication date
CA2902200A1 (en) 2014-09-04
IL240800A0 (en) 2015-10-29
KR101785595B1 (ko) 2017-10-16
KR101962301B1 (ko) 2019-03-26
IL240800B (en) 2018-03-29
KR20170117227A (ko) 2017-10-20
AU2014223495A1 (en) 2015-09-17
KR20150122239A (ko) 2015-10-30
JP2017194988A (ja) 2017-10-26
WO2014134234A1 (en) 2014-09-04
CA2902200C (en) 2018-05-29
AU2014223495B2 (en) 2017-07-13
JP2016519346A (ja) 2016-06-30
JP6484667B2 (ja) 2019-03-13

Similar Documents

Publication Publication Date Title
US9626343B2 (en) Caching pagelets of structured documents
JP6484667B2 (ja) 構造化文書のページレットのキャッシング
US10353993B2 (en) Phased generation and delivery of structured documents
US20210349964A1 (en) Predictive resource identification and phased delivery of structured documents
US8230046B2 (en) Setting cookies in conjunction with phased delivery of structured documents
US8676978B2 (en) Efficient storage and retrieval of resources for rendering structured documents
US10642904B2 (en) Infrastructure enabling intelligent execution and crawling of a web application
US20110055683A1 (en) Page caching for rendering dynamic web pages
US20110055314A1 (en) Page rendering for dynamic web pages
US20140143644A1 (en) Web browser page transition acceleration
US11842142B2 (en) Systems and methods for co-browsing
US8516041B1 (en) Pre-fetching asynchronously requested content
EP2780795A1 (en) System and method for viewer-based image metadata sanitization
JP6262742B2 (ja) データuri増強を利用するプログレッシブ画像処理
US8037136B2 (en) Tracking a state of a document accessible over a computer network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170215

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170215

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170330

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170609

R150 Certificate of patent or registration of utility model

Ref document number: 6159424

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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