【文献】
HTML5時代のjquery.lazyloadは画像のdata-original属性を使う,blog.ryow.net (Internet Archive),2011年12月10日,[2016年10月26日検索],URL,https://web.archive.org/web/20120418044200/http://blog.ryow.net/2011/12/10-150108.php
【文献】
[greasemonkey] Disable Lazy Load Plugin・GitHub,GitHub Gist,2012年11月25日,[2016年10月26日検索],URL,https://gist.github.com/ihsoy-s/4140482
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
本発明は、プロセス、装置、システム、合成物、コンピュータ読み取り可能ストレージ媒体に実装されたコンピュータプログラム製品、並びに/又は結合先のメモリに記憶された命令及び/若しくは結合先のメモリによって提供される命令を実行するように構成されたプロセッサ等のプロセッサなどの、数々の形態で実現することができる。本明細書では、これらの実現形態、又は本発明がとり得るその他のあらゆる形態を、技術と称することができる。総じて、開示されるプロセスの各ステップの順番は、本発明の範囲内で変更可能である。別途明記されない限り、タスクを実施するように構成されるものとして説明されるプロセッサ又はメモリなどのコンポーネントは、所定時にタスクを実施するように一時的に構成された汎用コンポーネントとして、又はタスクを実施するように製造された特殊コンポーネントとして実装可能である。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された1つ以上のデバイス、回路、並びに/又は処理コアを言う。
【0018】
本発明の原理を例示した添付の図面とともに、以下で、本発明の1つ以上の実施形態の詳細な説明が提供される。本発明は、このような実施形態との関わりのもとで説明されるが、いずれの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、数々の代替形態、変更形態、及び均等物を包含している。以下の説明では、本発明の完全な理解を与えるために、数々の具体的詳細が明記されている。これらの詳細は、例示を目的として提供されるものであり、本発明は、これらの詳細の一部又は全部を伴わずとも、特許請求の範囲にしたがって実施可能である。明瞭を期するために、本発明に関連した技術分野で知られる技術要素は、本発明が不必要に不明瞭にされないように、詳細な説明を省略されている。
【0019】
本明細書では、ページスナップショットの作成の実施形態が説明される。ウェブページに関係付けられているデータが受信される。遅延読み込みに関係付けられているウェブページに関連付けられているページリソースが決定される。遅延読み込みに関連付けられているページリソースは、トリガイベントに応答して読み込まれるように設定される。ページリソースは、少なくとも一部には、ウェブページに関連付けられている受信データの中のページリソースに関連付けられている1つ以上の属性を変更することに基づいて、トリガイベントを伴うことなく読み込まれる。読み込まれたページリソースは、レンダリングされる。レンダリングされたページリソースを含むページスナップショットが作成される。
【0020】
ウェブページのスナップショットは、様々な用途で所望されると考えられる。第1の例として、1つ以上のウェブサイトのそれぞれに関連付けられている各ウェブページのページスナップショットの作成を定期的に起動させるように、ウェブサーバが構成されることが挙げられる。第2の例として、関係するウェブページが検索結果の中に提示されたときに、ユーザがページスナップショットにアクセスすることを可能にするために、インデックスを付けた各ウェブページのページスナップショットの作成を起動させるように、検索エンジンが構成されることが挙げられる。
【0021】
図2は、ウェブページのスナップショットを作成するためのシステムの一実施形態を示す図である。この例では、システム200は、スナップショット作成エンジン202と、データベース204と、ネットワーク206と、ウェブサーバ208とを含む。ネットワーク206は、高速ネットワーク及び/又は電気通信ネットワークを含む。スナップショット作成エンジン202は、ネットワーク206を通じてウェブサーバ208と通信するように構成される。
【0022】
ウェブサーバ208は、1つ以上のウェブサイトを運営することができる。各ウェブサイトは、1ページ以上のウェブページを含むことができる。スナップショット作成エンジン202は、様々なウェブページのそれぞれのページスナップショットを作成するように構成される。例えば、スナップショット作成エンジン202は、ウェブサーバ208によって運営されるウェブサイトに含まれる各ウェブページのページスナップショットを定期的に作成するように構成される。(例えばタイムスタンプ及び/又はヴァージョン番号を関連付けられている)ページスナップショットは、スナップショット作成エンジン202によってデータベース204に格納することができる。例えば、ウェブページに関連付けられているページスナップショットにアクセスする必要があるエンティティ(例えば検索エンジン)に対し、スナップショット作成エンジン202は、データベース204に格納されているページスナップショットへのリンクを提供することができる。
【0023】
例えば、ウェブページのスナップショットを作成するために、先ず、スナップショット作成エンジン202は、そのウェブページに関連付けられているデータ(例えばHTMLウェブページファイル)をウェブサーバ208から取り込む。スナップショット作成エンジン202は、ウェブページに関連付けられているデータのローカルコピーを格納する。スナップショット作成エンジン202は、ウェブページに関連付けられているデータに含まれるページリソースの読み込み及び/又はレンダリングを開始する。ウェブページの特定のページリソースは、遅延読み込みに関係付けられているだろう。一部の実施形態では、遅延読み込みに関連付けられているページリソースは、2つのコンテンツ、すなわち代替コンテンツ及びオリジナルコンテンツに関係付けられている。例えば、ページリソースが画像である場合、オリジナルコンテンツが、完全にレンダリングされたウェブページの中に提示される画像であるのに対し、代替コンテンツは、空白画像(又はサイズが小さい画像)であってよい。遅延読み込みに関連付けられているページリソースの読み込みは、先ず、ページリソースに対応する代替コンテンツを読み込み、次いで、トリガイベント(例えば、ページリソースを表示エリア内に持ってくるための、ウェブページに対する何らかのユーザインタラクション)が検出されたらオリジナルコンテンツを読み込む。しかしながら、ページスナップショットを作成するプロセスでは、トリガイベントは発生しない。このように、遅延読み込みに関連付けられているページリソースが適切に読み込まれない事態を防止するために、或いは別の言い方をすると、(1つ以上の)ページリソースに対応する代替コンテンツを伴う状態でページスナップショットが作成される事態を防止するために、スナップショット作成エンジン202は、後ほど更に詳しく説明されるように、ウェブページのページスナップショットを撮る前にページリソース(のオリジナルコンテンツ)が適切に読み込まれる/レンダリングされることを可能にするように、影響を受けていたページリソースの遅延読み込みを防止するように構成される。
【0024】
一部の実施形態では、ウェブブラウザアプリケーションが、スナップショット作成エンジン202において実行され、ウェブページを読み込む及び/又はレンダリングするように構成される。ウェブブラウザアプリケーションは、少なくとも一部には遅延読み込みの防止を実施するように変更可能である又は構成することができる。一部の実施形態では、スナップショットツールが、スナップショット作成エンジン202において実行されている。スナップショットは、レンダリングされたウェブページのスナップショットを作成するように変更可能である又は構成することができる。
【0025】
図3は、ウェブページのスナップショットを作成するためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス300は、
図2のシステム200において実行される。
【0026】
ステップ302では、ウェブページに関連付けられているデータが受信される。
【0027】
ページスナップショットを所望されるウェブページに対し、そのウェブページに対応するウェブページファイルを求めるリクエストが、そのようなデータを格納しているエンティティに送信される。例えば、リクエストは、ハイパーテキスト転送プロトコル(HTTP)リクエストメッセージであってよい。リクエストされたデータを格納しているエンティティは、ウェブサーバ又はコンテンツキャッシュサーバであってよい。ウェブページに関連付けられている受信データは、ウェブページに関連付けられているウェブページファイルであってよい。ウェブページファイルは、ハイパーテキストマークアップ言語(HTML)ウェブページファイルであってよい。受信データは、ローカルに格納することができる。
【0028】
ページスナップショットは、任意のタイプのウェブページについて作成することができる。第1の例として、ページスナップショットは、アップデートされた既存のウェブページについて作成することができる。第2の例として、スナップショットは、新しいウェブページについて作成することができる。
【0029】
ステップ304では、ウェブページに関連付けられているページリソースが、遅延読み込みに関係付けられていると決定され、遅延読み込みプロセスでは、遅延読み込みに関連付けられているページリソースは、トリガイベントに応答して読み込まれるように設定される。
【0030】
一部の実施形態では、受信されたウェブページファイルが解析され、ウェブページに含まれるページリソースが、ウェブページファイルからページリソースリストへコピーされる。ページリソースの例として、画像、音声クリップ、及び映像が挙げられる。しかしながら、例示を目的として、本明細書で説明される様々な例では、画像としてのページリソースが論じられる。
【0031】
上述のように、遅延読み込み技術は、特定のページリソースの読み込みを、そのページリソースに関連付けられているトリガイベントが発生するまで遅延させる。例えば、ページリソースに関連付けられているトリガイベントとしては、ページリソース付近のウェブページ領域までユーザがスクロールすること、ページリソース付近のウェブページ領域をユーザがクリックする若しくはそのような領域の上にユーザがカーソルを移動させること、又はユーザがウェブページの表示エリアをページリソース付近に移動させることが挙げられる。例えば、遅延読み込みに関連付けられているページリソースを含むページの読み込みでは、最初、ページリソースのオリジナルコンテンツの代わりに代替コンテンツが読み込まれる。ページリソースに関連付けられているオリジナルコンテンツは、完全にレンダリングされたウェブページに提示されることを望まれるコンテンツであり、代替コンテンツは、ページリソースに関連付けられているトリガイベントが発生するまでオリジナルコンテンツに代わって読み込まれる。ページリソースの代替コンテンツ又はオリジナルコンテンツの読み込みは、対応するロケーション/アドレス/ソースからコンテンツを取り込むことを含むことができる。一部の実施形態では、代替コンテンツ及び/又はオリジナルコンテンツは、ウェブブラウザアプリケーションによって読み込まれる。
【0032】
例えば、代替コンテンツは、空白画像、又は比較的小さいサイズ(したがって読み込み及び/若しくはレンダリングの時間が短い)その他の画像である。ページリソースの代替コンテンツは、所定の画像であってよい。ページリソースのオリジナルコンテンツは、代替コンテンツよりも大きいサイズの画像であってよい。このように、ページレンダリングに関係するのは空白画像であり、ページリソースのオリジナルコンテンツは、設定されたトリガイベントを受けた場合にのみ読み込まれる。例えば、ページリソースに対応する空白画像にウェブブラウザのページスクロールバーが近づくことによるトリガイベントによって、そのページリソースに対応するオリジナル画像の読み込み及びレンダリングをトリガすることができる。遅延読み込みは、ページに含まれるページリソースでまだトリガイベントが発生していないページリソースのレンダリングを不完全なものにする可能性がある。
【0033】
様々な実施形態において、ウェブページのページスナップショットの作成は、遅延読み込みに関連付けられているトリガイベントを発生させない。すると、ウェブページの中に遅延読み込みに関連付けられているページリソースがある場合、そのようなページリソースは、従来のページスナップショット作成プロセスでは読み込まれない及び/又は適切にレンダリングされないことになる。したがって、従来のページスナップショットプロセスによって作成されるページスナップショットは、遅延読み込みに関連付けられているページリソースの読み込み及び/又はレンダリングがトリガされなかった空白の又はそれ以外の形で不完全なエリアを含むと考えられる。
【0034】
遅延読み込みによる悪影響を受けないページスナップショットを作成するために、様々な実施形態において、遅延読み込みに関連付けられているウェブページのページリソースの読み込みは、そのようなページリソースのオリジナルコンテンツがトリガイベントの発生を伴わずとも読み込み可能であるように変更される。様々な実施形態において、遅延読み込みに関連付けられているページリソースの読み込みを、そのページリソースのオリジナルコンテンツがトリガイベントを伴わずとも読み込み可能であるように変更することは、「遅延読み込みの防止」と呼ばれる。一部の実施形態では、遅延読み込みの防止を実施するにあたり、先ず、遅延読み込みに関係付けられているとして設定されたウェブページの各ページリソースが特定される。例えば、ページリソースは、ウェブページファイルの中のページリソースに関連付けられている1つ以上の属性に基づいて、遅延読み込みに関係付けられているとして特定することができる。
【0035】
ステップ306において、少なくとも一部には、ウェブページに関連付けられている受信データの中のページリソースに関連付けられている1つ以上の属性を変更することに基づいて、ページリソースは、トリガイベントを伴うことなく読み込まれる。
【0036】
遅延読み込みに関係付けられているものとして特定された各ページリソースに対し、ウェブページファイルの中の上記ページリソースに関連付けられている属性は、その変更によって、上記ページリソースのまだ読み込まれていない代替コンテンツに代わるものとして又は上記ページリソースの既に読み込まれた代替コンテンツに置き換わるものとして上記ページリソースのオリジナルコンテンツが読み込まれるように、ウェブページファイルのローカルコピーの中で変更される。一部の実施形態では、変更された属性は、ページリソースの読み込みをトリガするように構成されたコンピュータプログラムである。一部の実施形態では、ウェブページファイルのローカルコピーの中で属性を変更されたページリソースを読み込むように、コンピュータプログラム(例えばJavaScript(登録商標、以下同じ)プログラム)が構成される。
【0037】
遅延読み込みに関係付けられていたページリソースの属性を変更したことによって、対応するトリガイベントの発生を伴わずとも、ページリソースのオリジナルコンテンツを読み込むことができる。
【0038】
ステップ308において、読み込まれたページリソースはレンダリングされる。ページリソースは、読み込まれた(例えば、そのロケーション/アドレス/ソースから取り込まれた)後にレンダリングすることができる。一部の実施形態では、ページリソースは、ウェブブラウザアプリケーションによってレンダリングされる。一部の実施形態では、ページリソースは、別個のページスナップショット作成アプリケーションによってレンダリングされる。
【0039】
ステップ310において、レンダリングされたページリソースを含むウェブページのスナップショットが作成される。遅延読み込みに関連付けられているもの及び関係付けられていないものを含む全ページリソースが、ウェブページのその他のコンテンツとともに(例えばウェブブラウザによって)成功裏にレンダリングされたという表示を受けて、その完全にレンダリングされたウェブページに基づいて、ページスナップショットを作成することができる。様々な実施形態において、成功したレンダリングとは、ウェブページの全ページリソースを完全に読み込むことを言う。一部の実施形態では、成功したレンダリングとは、ウェブページの全ページリソースを完全に読み込むことに加えて、ウェブページの全ページリソースを、ウェブブラウザアプリケーション内において又はページリソースをページスナップショット作成アプリケーションによってキャプチャ可能にする何らかの他のやり方で、完全に表示することを言う。例えば、ページスナップショットは、ウェブブラウザアプリケーションによって、又はウェブブラウザとは別個のページスナップショット作成アプリケーションによって作成することができる。
【0040】
一部の実施形態では、ページスナップショットは、ウェブページの全ページリソースが完全にレンダリングされたことの検出に基づいて、コンピュータプログラムによって自動的に作成することができる。一部のその他の実施形態では、ページスナップショットは、ページの画像をキャプチャするためのスクリーンキャプチャツールに関連付けられているユーザグラフィックインターフェースを使用して、自動的に作成することができる。
【0041】
一部の実施形態では、プロセス300は、プログラム可能なウェブブラウザ及びプログラム可能なスクリーンショットツールを使用して実行される。
【0042】
遅延読み込みの防止ゆえに、レンダリングされたウェブページ及び対応するページスナップショットは、レンダリングされた完全なページリソースを全て有することが望ましい。ページスナップショットは、ウェブページに関連付けられているその他の情報とともに格納することができる。
【0043】
図4は、遅延読み込みを防止するためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス400は、
図2のシステム200において実行される。一部の実施形態では、
図3のプロセス300の304、306、及び308は、プロセス400を使用して実現することができる。
【0044】
プロセス400は、特定のウェブページに関連付けられているページリソースの遅延読み込みを防止するプロセスの一例を示している。例えば、プロセス400は、ウェブページのページスナップショットが作成される前に実施することができる。一部の実施形態では、プロセス400は、JavaScriptプログラムを使用して実現される。一部の実施形態では、プロセス400は、ウェブブラウザアプリケーションによって、又はウェブサーバとやり取りする別個のコンピュータ(例えばJavaScript)プログラムによって実施される。
【0045】
ステップ402において、ウェブページに関連付けられている複数のページリソースを含むページリソースリストが決定される。一部の実施形態では、ウェブページに関連付けられている(例えばHTML)ファイルが得られる。ファイルは、ページリソースについてトラバースされ、各ページリソースを含むページリソースリストが決定される。
【0046】
ステップ404において、ページリソースリストから、(次の)ページリソースの1つ以上の属性が得られる。ページリソースリストに含まれる各ページリソースが順次取り込まれ、そのページリソースの属性がファイルから得られる。例えば、ページリソースの属性は、ページリソースに対応するHTMLファイルの一部分であってよい。例えば、ページリソースは、HTMLファイルのHTMLタグに関係付けられていてよい。
【0047】
ステップ406において、少なくとも一部には、得られた1つ以上の属性に基づいて、ページリソースが遅延読み込みに関係付けられているかどうかが決定される。ページリソースが遅延読み込みに関係付けられていると決定された場合は、制御は408に引き渡される。そうではなく、ページリソースが遅延読み込みに関係付けられていないと決定された場合は、制御は412に引き渡される。
【0048】
ページリソースに関連付けられている属性に基づいて、ページリソースが遅延読み込みに関係付けられているか否かが決定される。
【0049】
一部の実施形態では、ページリソースは画像である。ページを読み込むために遅延読み込み技術が使用される場合は、(プロセス400を実行する前に、)ページの元のHTMLファイルが、相応してアップデートされる。例えば、ページリソース(画像)に対応するHTMLファイルの中の少なくとも幾つかの文のsrc属性が、アップデートされる。元のHTMLファイルの中で、各ページリソースは、タグで表すことができ、ページリソースのオリジナル画像のロケーションは、その対応するアドレス(例えばユニバーサルリソースロケータ(URL))によって、属性scrの値のもとに示すことができる。例えば、元のHTMLファイルの中のタグ情報<img src= “./ture/path/of/image.jpg”>は、ページソースAのオリジナルコンテンツ(オリジナル画像)がURL「/ture/path/of/image.jpg」から取り込み可能であることを表している。ページリソースAの遅延読み込みを可能にするためにHTMLファイルをアップデートする際は、元の文<img src= “./ture/path/of/image.jpg”>がアップデートされて、<img src= “./empty.jpg” src2= “./ture/path/of/image.jpg”>になる。アップデートされた文では、代替コンテンツ(代替画像)のURL(「./empty.jpg」)が、属性srcの値としてのページリソースAのオリジナル画像のURLに置き換わり、オリジナル画像のURLは、新しい属性、すなわち属性src2のもとに保存される。代替画像は、所定のサイズの空白画像であってよい。ウェブページに対して遅延読み込みが実施された場合は、先ず、代替画像がsrc= “./empty.jpg” src2”から読み込まれ、次いで、トリガイベントを受けて、ページリソースAに対応するオリジナル画像が代替画像に取って代わるべくsrc2= “./ture/path/of/image.jpg”から読み込まれる。
【0050】
一部の実施形態では、ページリソースは、ページリソースに関連付けられているページリソースタグ情報(例えば)が、属性srcに追加して別の属性を含む場合に、遅延読み込みに関係付けられていると決定される。例えば、追加属性は、src2であってよい。ページリソースのタグ情報内に属性src2が存在するゆえに、ページリソースのオリジナル画像のURLが属性src2の値であること、及び代替画像(例えば空白画像)のURLが属性srcの値として使用されたことが想定される。
【0051】
同様に、一部の実施形態では、ページリソースは、ページリソースに関連付けられているページリソースタグ情報(例えば)が、属性srcに追加して別の属性を含まない場合に、遅延読み込みに関係付けられていないと決定される。一部の実施形態では、遅延読み込みに関係付けられていないと決定されたページリソースは、ウェブページファイル内におけるその属性にいかなる変更を加えられることもなく、自動的に読み込み及びレンダリングされるだろう。
【0052】
ステップ408において、ページリソースの1つ以上の属性が変更される。
【0053】
ページリソースの属性が遅延読み込みに関係付けられている場合は、属性は、そうでなければページリソースの遅延読み込みをトリガするだろうトリガイベントの発生を伴うことなくページリソースが読み込まれるように、ウェブページファイルのローカルコピー内において変更することができる。例えば、ウェブページファイルのローカルコピー内におけるページリソースのタグ情報は、<img src=”./empty.jpg” src2=”./ture/path/of/image.jpg”>である。ページリソースのタグ情報は、属性srcのほかに別の属性も有するので、ページリソースは、遅延読み込みに関係付けられていると決定される。一部の実施形態では、遅延読み込みに関連付けられているページリソースの属性を変更することは、属性srcの代替画像のアドレス(例えばURL)の値を、追加属性(例えば属性src2)の値として格納されたオリジナル画像のアドレス(例えばURL)で置き換えることを含む。このようにページリソースの属性を変更することによって、ページリソースの属性srcの値は、代替画像のアドレスから、ページリソースに対応するオリジナル画像のアドレスに復元される。ウェブページファイルのローカルコピー内におけるページリソースの文が<img src=”./empty.jpg” src2=”./ture/path/of/image.jpg”>である例では、変更後のヴァージョンは、文<img src= “./ture/path/of/image.jpg”>を含む。この例では、ページリソースに対応するオリジナル画像のアドレスが属性srcの値に取って代わって元に戻るのみならず、追加属性である属性src2が除去/削除される。
【0054】
ステップ410において、ページソースは、トリガイベントを伴うことなく読み込まれる。ウェブページファイルのローカルコピー内において属性を変更されたページリソースが読み込まれる。ページリソースの属性の変更ゆえに、そのページリソースに遅延読み込みは最早適用されず、そのページリソースは、トリガイベントの発生を必要とすることなく変更後の属性に基づいて読み込むことができる。例えば、ページリソースの属性に基づいてページリソースの遅延読み込みを実施することに関連付けられているコンピュータプログラムが、そのページリソースを遅延読み込みに関連付けられているものとして最早認識することはない。したがって、本明細書で説明されるように属性を変更されたページリソースは、トリガイベントに基づいて発生するのではない通常の読み込み/レンダリング手順を経て読み込まれてレンダリングされる。例えば、ページリソースの変更後のタグ情報が<img src= “./ture/path/of/image.jpg”>であると想定する。したがって、ページリソースは、URL「./ture/path/of/image.jpg」から取り込まれてレンダリングされる。
【0055】
一部の実施形態では、ページリソースに対応する代替画像(例えば空白画像)が既に読み込まれている及び/又はレンダリングされている場合は、ページリソースの属性の変更及び/又は変更後の属性に基づくページリソースの読み込みは、レンダリングされた代替画像を、ページリソースに対応するレンダリングされたオリジナル画像に置き換える。
【0056】
ステップ412において、ページリソースリストの中に少なくとももう1つページリソースがあるかどうかが決定される。ページリソースリストの中に少なくとももう1つページリソースがあると決定された場合は、制御は404に戻る。そうではなく、ページリソースの中にこれ以上のページリソースはないと決定された場合は、プロセス400は終了する。リスト全体がトラバースされるまで、ページリソースリストの各ページリソースが遅延読み込みとの関係付けについて調べられる。
【0057】
図5は、遅延読み込みを防止するプロセスをトリガするためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス500は、
図2のシステム200において実行される。
【0058】
一部の実施形態では、ウェブページのページスナップショットを作成する前にウェブページのページリソースをレンダリングするプ過程において、
図4のプロセス400のような、遅延読み込みを防止するプロセスが1回以上にわたって起動される。プロセス500は、遅延読み込みを防止するプロセスをウェブページのページスナップショットの作成に先立っていつ実施させるかを決定するプロセスの一例を説明している。
【0059】
一部の実施形態では、
図4のプロセス400のような、遅延読み込みを防止するプロセスを、ウェブページのページスナップショットの作成に先立って、1つ以上のトリガ信号に応答して実施されるように設定することができる。例えば、遅延読み込みを防止するプロセスは、1つ以上のトリガ信号に結び付いたものとして説明することができる。各トリガ信号は、(例えばウェブブラウザアプリケーションにおいて)ウェブページが読み込まれる及び/又はレンダリングされるプロセスに関連付けられている指定のイベントの発生に基づいて生成される。こうすれば、遅延読み込みを防止するプロセスの実行に1つ以上のトリガ信号を結び付ける設定を、予め格納しておくことができる。次いで、(例えばウェブブラウザによる)ウェブページの読み込み及び/又はレンダリングの際に、指定のイベントが発生したときは、そのイベントに対応するトリガ信号が生成され、該トリガ信号の検出に応答して、遅延読み込みを防止するプロセスをトリガすることができる。ウェブページを読み込む及び/又はレンダリングするプロセスにおいて、遅延読み込みを防止するプロセスは、発生する指定のイベントに対応するトリガ信号の数に応じて1回以上にわたって実施させることができる。
【0060】
遅延読み込みを防止するプロセスは、ウェブページの中の遅延読み込みに関連付けられている各ページリソースの遅延読み込みを防止することができる前に、(例えばネットワーク接続の悪さ及び/又はその他の理由で)中断される可能性があるゆえに、ウェブページの読み込み及び/又はレンダリングの際に、2回以上にわたってトリガされることが望ましいだろう。例えば、
図4のプロセス400によって説明される遅延読み込みを防止するプロセスは、ページリソースリスト全体がトラバースされる前に中断される可能性がある。この場合、遅延読み込みを防止するプロセスを実施させるための複数のトリガ信号(それぞれ恐らくは異なる指定イベントに対応している)を設定することによって、ウェブページの中の遅延読み込みに関連付けられている全ページリソースに遅延読み込みの防止が適用される可能性が高まる。遅延読み込みを防止するプロセスがトリガされるたびに、その前の反復における遅延読み込みの防止によって既に処理されているページリソースはスキップすることができる。
【0061】
遅延読み込みを防止するプロセスの実施を引き起こすように設定されたトリガ信号を生成させるように設定された指定イベントの第1の例は、初期レイアウト完了イベント(例えば、Qtクロスプラットフォームアプリケーションフレームワークによって指定されるようなQWebFrame initialLayoutCompleted信号)である。例えば、ウェブページのレイアウト完了イベントは、フレームが最初に配置されたのはいつか、及び/又はウェブブラウザ内へ既にレンダリングされたウェブページファイルのHTML構造を言うことができる。
【0062】
遅延読み込みを防止するプロセスの実施を引き起こすように設定されたトリガ信号を生成させるように設定された指定イベントの第2の例は、読み込み完了イベント(例えば、Qtクロスプラットフォームアプリケーションフレームワークによって指定されるようなQWebFrame loadFinished信号)である。例えば、ウェブページの読み込み完了イベントは、フレーム及び/又はフレームに含まれるコンテンツ(例えばページリソース)の読み込みの完了を言うことができる。例えば、遅延属性に関連付けられているページリソースが、遅延読み込みを防止するプロセスをまだ経ていない場合は、そのページリソースに対応する代替画像(例えば空白画像)を読み込むことができる。
【0063】
ステップ502において、ウェブページに関連付けられているデータが取り込まれる。例えばページスナップショットを作成されるウェブページの、(例えばHTML)ウェブページファイルが取り込まれる。
【0064】
ステップ504において、初期レイアウト完了イベントが発生したか否かが決定される。初期レイアウト完了イベントに対応するトリガ信号(例えば、Qtクロスプラットフォームアプリケーションフレームワークによって指定されるようなQWebFrame initialLayoutCompleted信号)が検出された場合は、制御は506に引き渡される。そうではなく、初期レイアウト完了イベントに対応するトリガ信号が受信されなかった場合は、信号待ちされる。ステップ506では、遅延読み込みを防止するプロセスが実施される。一部の実施形態では、ステップ506では、
図4のプロセス400の遅延読み込み防止が実施される。一部の実施形態では、遅延読み込みを防止するプロセスは、インジェクトされたJavaScriptプログラムとして実装される。
【0065】
一部の実施形態では、初期レイアウト完了イベントに関連付けられているトリガ信号が検出される前は、読み込みは開始されていない。しかしながら、初期レイアウト完了イベントに関連付けられているトリガ信号が検出された後は、読み込みが開始する。
【0066】
ステップ508において、読み込み完了イベントが発生したか否かが検出される。読み込み完了イベントに対応するトリガ信号(例えば、Qtクロスプラットフォームアプリケーションフレームワークによって指定されるようなQWebFrame loadFinished信号)が検出された場合は、制御は510に引き渡される。そうではなく、初期レイアウト完了イベントに対応するトリガ信号が受信されなかった場合は、信号待ちされる。ステップ510において、遅延読み込みを防止するプロセスが実施される。
【0067】
読み込まれたページリソースがウェブページのためにレンダリングされる際に、読み込まれた特定のページリソースのレンダリングが失敗する可能性がある。例えば、読み込まれたページリソースが読み込まれている間に、ネットワーク接続の遅さが原因でページリソースのレンダリングが失敗するかもしれない。一部の実施形態では、読み込み完了イベントが検出された後、読み込まれたページリソースが完全にレンダリングされるまでに、幾らかの時間を経過させることができる。したがって、以前は遅延読み込みによる影響を受けていたページリソースが、遅延読み込みの防止によって成功裏に読み込まれ、次いで成功裏にレンダリングされることを保証するために、読み込み完了イベント及びレンダリング完了イベントの後の期間に、遅延読み込みを防止するプロセス(例えば
図4のプロセス400)を、既定の時間間隔ごとに定期的に実施することができる。
【0068】
ステップ512において、既定の時間間隔が経過したかどうかが決定される。既定の時間間隔が経過したと決定された場合は、制御は514に引き渡され、そこで、遅延読み込みのプロセスが実施される。そうでなく、既定の時間間隔が経過していないと決定された場合は、プロセスは516に引き渡される。
【0069】
ステップ516において、ウェブページのレンダリングが完了したか否かが決定される。ウェブページのレンダリングが完了したと決定された場合は、プロセス500は終了する。そうではなく、ウェブページのレンダリングがまだ完了していないと決定された場合は、制御はステップ512に返される。ウェブページが完全にレンダリングされたときは、一部の実施形態では、ウェブページからスナップショットを作成することができる。
【0070】
図6は、遅延読み込みの防止を適用されたウェブページのページスナップショットの一例を示す図である。
図6の例では、
図3のプロセス300などのプロセスを使用して、ページスナップショット600が作成された。ウェブページには、ページスナップショット600の作成前にウェブページの全ページリソースが適切に読み込まれてレンダリングされるように遅延読み込みの防止が適用されたので、ページスナップショット600では、全ページリソースを完全にレンダリングされた状態で含む。特定のページリソースがまだ遅延読み込みに関連付けられているままである
図1のページスナップショット100とは異なり、ページスナップショット600は、
図1のページスナップショット100の空白領域102のような不完全な及び/又は空白のエリアを含まない。例えば、ページスナップショット600は、検索エンジンによって提示される検索結果の中にウェブページが含まれるときに、ユーザがページスナップショット600にアクセスして見るためのページスナップショット600へのリンクがそれらの検索結果とともに表示可能であるように、検索エンジンによって格納することができる。
【0071】
図7は、遅延読み込みを防止するためのシステムの一実施形態を示す図である。この例では、システム700は、レンダリングモジュール701と、防止モジュール702と、スナップショットモジュール703と、検出モジュール704と、第1のトリガモジュール705と、第2のトリガモジュール706とを含む。
【0072】
モジュール及びサブモジュールは、1つ以上の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、又は本発明の実施形態で説明される方法を(パソコン、サーバ、ネットワーク機器などの)計算装置に実行させるための幾つかの命令を含み尚且つ(光ディスク、フラッシュストレージデバイス、モバイルハードディスクなどの)不揮発性のストレージ媒体に記憶させることができるソフトウェア製品の形で具現化することができる要素として設計されたプログラマブルロジックデバイス及び/若しくは特殊用途向け集積回路などのハードウェアとして実装することができる。モジュール及びサブモジュールは、1つのデバイス上に実装されてよい、又は複数のデバイスに分散されてよい。
【0073】
レンダリングモジュール701は、ウェブページに関連付けられているデータを受信するように構成される。レンダリングモジュール701は、ウェブページの各読み込まれたページリソースをレンダリングするようにも構成される。
【0074】
防止モジュール702は、遅延読み込みの防止を実施するように構成される。遅延読み込みの防止は、ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられていると決定することを含み、ここで、ページリソースは、トリガイベントに応答して読み込まれるように設定される。遅延読み込みの防止は、更に、少なくとも一部には、ウェブページに関連付けられている受信データの中のページリソースに関連付けられている1つ以上の属性を変更することに基づいて、トリガイベントを伴うことなくページリソースを読み込むことを含む。
【0075】
検出モジュール704は、ページレンダリングプロセスにおける対応する指定イベントに関連付けられている1つ以上のトリガ信号を検出するように構成される。指定イベントの第1の例は、初期レイアウト完了であり、指定イベントの第2の例は、読み込み完了イベントである。指定イベントに対応するトリガ信号の検出に応答して、検出モジュール704は、第1のトリガモジュール705にメッセージを送信するように構成される。このようなメッセージの受信を受けて、第1のトリガモジュール705は、遅延読み込みの防止を実施するように防止モジュール702をトリガするように構成される。
【0076】
検出モジュール704によって、ページレンダリングプロセスにおける最後の指定イベントが検出された後、第2のトリガモジュール706は、ページレンダリングが完了するまで既定の時間間隔ごとに遅延読み込みの防止を実施するように防止モジュール702をトリガするように構成される。
【0077】
スナップショットモジュール703は、ページリソースが完全にレンダリングされた後にウェブページのスナップショットを作成するように構成される。
【0078】
図8は、防止モジュールの一例を示す図である。一部の実施形態では、
図7のシステム700の防止モジュール702は、
図8の例で実現することができる。この例では、防止モジュールは、リスト形成モジュール801と、属性チェックモジュール802と、実行サブモジュール804とを含む。リスト形成モジュール801は、ウェブページに関連付けられている複数のページリソースを含むページリソースリストを決定するように構成される。属性チェックモジュール802は、ページリソースリストに含まれる各ページリソースの属性を得て、ページリソースの属性が遅延読み込みに関係付けられているかどうかをチェックするように構成される。実行サブモジュール804は、遅延読み込みに関連付けられているページリソースに対応するオリジナル画像がトリガイベントを伴うことなく代替画像に代わって読み込まれるように、そのページリソースの1つ以上の属性を変更するように構成される。
【0079】
本説明における様々な実施形態は、総じて進行順に説明されている。各実施形態の説明は、その他の実施形態との相違箇所に焦点を当てており、その説明は、各実施形態の同一の又は類似の部分を相互に参照可能である。
【0080】
本出願は、プログラムモジュール又はプログラムユニットのように、コンピュータによって実行されるコンピュータ実行可能コマンドを一般的な背景として説明することができる。総じて、プログラムモジュール又はプログラムユニットは、特定のタスクを実行するための又は特定の抽象データ型を実現するための、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むことができる。通常は、プログラムモジュール又はプログラムユニットは、ソフトウェア、ハードウェア、又は両者の組み合わせによって実現することができる。本出願は、分散コンピューティング環境の中で行うこともできる。このような分散コンピューティング環境では、タスクは、通信ネットワークを通じて接続された遠隔処理機器によって実行される。分散コンピューティング環境では、プログラムモジュール又はプログラムユニットは、ストレージ機器を含むローカルコンピュータ又はリモートコンピュータにおけるストレージ媒体上に位置付けることができる。
【0081】
当業者ならば、本出願の実施形態が、方法、システム、又はコンピュータプログラム製品として提供可能であることがわかるはずである。したがって、本出願は、完全にハードウェアで構成される実施形態、完全にソフトウェアで構成される実施形態、又はハードウェアとソフトウェアとを組み合わせた実施形態の形態をとることができる。また、本出願は、コンピュータ操作可能なプログラムコードを含む1つ以上のコンピュータ操作可能なストレージ媒体(磁気ディスクストレージデバイス、CD−ROM、及び光ストレージデバイスを含むがこれらに限定はされない)に実装されたコンピュータプログラム製品の形態をとることができる。
【0082】
本文書は、本出願の原理及び実装形態を解説するために、具体的な実施形態を用いてきた。上記の実施形態の説明は、本開示の方法及びその核となる概念の理解を助けるためのものにすぎない。更に、当業者ならば、本開示の概念をもとにして、実装の具体的形態及び適用の範囲に対して変更を加えることができる。以上をまとめると、本説明の内容は、本出願を制限するものと理解されてはならない。
【0083】
以上の実施形態は、理解を明瞭にする目的で幾らか詳細に説明されてきたが、本発明は、提供された詳細に限定されない。本発明を実現するには、数々の代替的手法がある。開示された実施形態は、例示的なものであり、限定的なものではない。
適用例1:1つ以上のプロセッサであって、
ウェブページに関連付けられているデータを受信することと、
前記ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられていると決定し、前記ページリソースは、遅延読み込みプロセスの間トリガイベントに応答して読み込まれるように設定され、
少なくとも一部には、前記ウェブページに関連付けられている前記受信データの中の前記ページリソースに関連付けられている1つ以上の属性を変更することに基づいて、前記トリガイベントを伴うことなく前記ページリソースを読み込み、
前記読み込まれたページリソースをレンダリングし、
前記レンダリングされたページリソースを含む前記ウェブページのページスナップショットを作成するように構成されている1つ以上のプロセッサと、
前記1つ以上のプロセッサに接続され、前記1つ以上のプロセッサに命令を提供するように構成されているメモリと、
を備えるシステム。
適用例2:適用例1に記載のシステムであって、
前記ウェブページに関連付けられている前記データは、ハイパーテキストマークアップ言語(HTML)ファイルを含む、システム。
適用例3:適用例1に記載のシステムであって、
前記トリガイベントは、前記ウェブページに関するユーザ選択に関連付けられている、システム。
適用例4:適用例1に記載のシステムであって、
前記ページリソースは、代替コンテンツ及びオリジナルコンテンツに関連付けられており、前記ページリソースに関連付けられている1つ以上の属性の変更がない場合は、前記代替コンテンツが先ず読み込まれるように設定され、前記トリガイベントに応答して、前記オリジナルコンテンツが読み込まれるように設定される、システム。
適用例5:適用例4に記載のシステムであって、
少なくとも一部には、前記1つ以上の属性を変更することに基づいて、前記トリガイベントを伴うことなく前記ページリソースを読み込むことは、前記オリジナルコンテンツを読み込むことを含む、システム。
適用例6:適用例1に記載のシステムであって、
前記1つ以上のプロセッサは、更に、前記ウェブページに関連付けられている複数のページリソースを含むページリソースリストを決定するように構成されている、システム。
適用例7:適用例1に記載のシステムであって、
前記ウェブページに関連付けられている前記受信データの中の前記ページリソースに関連付けられている1つ以上の属性を変更することは、前記ページリソースに関連付けられているページリソースタグ情報を変更することを含む、システム。
適用例8:適用例7に記載のシステムであって、
前記ページリソースタグ情報は、タグ情報を含む、システム。
適用例9:適用例7に記載のシステムであって、
前記ページリソースに関連付けられているページリソースタグ情報を変更することは、前記ページリソースタグ情報の属性srcの値を前記ページリソースタグ情報の追加属性の値に置き換えることを含む、システム。
適用例10:適用例1に記載のシステムであって、
前記ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられているとの決定は、トリガ信号の検出に応答して実施される、システム。
適用例11:適用例10に記載のシステムであって、
前記トリガ信号は、初期レイアウト完了イベントに関係付けられている、システム。
適用例12:適用例10に記載のシステムであって、
前記トリガ信号は、読み込み完了イベントに関連付けられている、システム。
適用例13:適用例10に記載のシステムであって、
前記トリガ信号は、読み込み完了イベントに続く既定の時間間隔の経過に関連付けられている、システム。
適用例14:ウェブページに関連付けられているデータを受信し、
1つ以上のプロセッサによって、前記ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられていると決定し、前記ページリソースは、遅延読み込みプロセスの間、トリガイベントに応答して読み込まれるように設定され、
少なくとも一部には、前記ウェブページに関連付けられている前記受信データの中の前記ページリソースに関連付けられている1つ以上の属性を変更することに基づいて、前記トリガイベントを伴うことなく前記ページリソースを読み込み、
前記読み込まれたページリソースをレンダリングし、
前記レンダリングされたページリソースを含む前記ウェブページのページスナップショットを作成すること、
を備える方法。
適用例15:適用例14に記載の方法であって、
前記トリガイベントは、前記ウェブページに関するユーザ選択に関連付けられている、方法。
適用例16:適用例14に記載の方法であって、
前記ページリソースは、代替コンテンツ及びオリジナルコンテンツに関連付けられており、前記ページリソースに関連付けられている1つ以上の属性の変更がない場合は、前記代替コンテンツが先ず読み込まれるように設定され、前記トリガイベントに応答して、前記オリジナルコンテンツが読み込まれるように設定される、方法。
適用例17:適用例16に記載の方法であって、
少なくとも一部には、前記1つ以上の属性を変更することに基づいて、前記トリガイベントを伴うことなく前記ページリソースを読み込むことは、前記オリジナルコンテンツを読み込むことを含む、方法。
適用例18:適用例14に記載の方法であって、更に、
前記ウェブページに関連付けられている複数のページリソースを含むページリソースリストを決定することを備える方法。
適用例19:適用例14に記載の方法であって、
前記ウェブページに関連付けられている前記受信データの中の前記ページリソースに関連付けられている1つ以上の属性を変更することは、前記ページリソースに関連付けられているページリソースタグ情報を変更することを含む、方法。
適用例20:適用例19に記載の方法であって、
前記ページリソースに関連付けられているページリソースタグ情報を変更することは、前記ページリソースタグ情報の属性srcの値を前記ページリソースタグ情報の追加属性の値に置き換えることを含む、方法。
適用例21:非一時的なコンピュータ読み取り可能ストレージ媒体に盛り込まれたコンピュータプログラム製品であって、
ウェブページに関連付けられているデータを受信するための命令と、
前記ウェブページに関連付けられているページリソースが遅延読み込みに関係付けられていることを決定するための命令と、前記ページリソースは、遅延読み込みプロセスの間トリガイベントに応答して読み込まれるように設定され、
少なくとも一部には、前記ウェブページに関連付けられている前記受信データの中の前記ページリソースに関連付けられている1つ以上の属性を変更することに基づいて、前記トリガイベントを伴うことなく前記ページリソースを読み込むための命令と、
前記読み込まれたページリソースをレンダリングするための命令と、
前記レンダリングされたページリソースを含む前記ウェブページのページスナップショットを作成するための命令と、
を備えるコンピュータプログラム製品。