(57)【要約】  事前処理コードに埋め込まれた署名/証明を使用して、事前処理コードの使用または再使用を可能にし、ウェブページコンテンツ内で一部の動作を実行するまたは一部のスクリプトを実行する必要性を除去するための方法、サーバ、およびシステム。1つまたは複数の動作をウェブページコンテンツ内の実行可能スクリプト内で実行することができ、動作の結果は、対応する動作がブラウザによってスキップされ得ることを検証するために使用できるように署名される。署名された事前処理コードを受け取るブラウザは、署名検証プロセスを用いて、ブラウザがウェブページコンテンツ内の対応するスクリプトの実行を回避できるか、または代替動作を実行できるかを決定することができる。動作を事前実行し、結果をオフラインツールによって署名しウェブページコンテンツに含めることができる。動作の結果は、署名とともにメモリに記憶することができ、したがって将来再使用することができる。
2015515657.tif 000002
【特許請求の範囲】
【請求項１】
ブラウザでコンテンツを処理するための方法であって、
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを前記ブラウザ内に受け取るステップと、
署名検証プロセスを用いて、前記事前実行動作のうちの少なくとも1つに関連付けられた前記署名を検証するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めた場合、第1の動作を実行するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めない場合、第2の動作を実行するステップと
を含む方法。
【請求項２】
第1の動作を実行するステップが、前記事前実行動作を取り込むステップを含む、請求項1に記載の方法。
【請求項３】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作をスキップするステップを含む、請求項1に記載の方法。
【請求項４】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を変更するステップを含む、請求項1に記載の方法。
【請求項５】
第2の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を実行するステップを含む、請求項1に記載の方法。
【請求項６】
署名検証プロセスを用いて、前記事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、前記事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含む、請求項1に記載の方法。
【請求項７】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、オフラインツールにおいてツール動作を実行するステップを含み、前記方法は、
前記署名された事前実行動作を前記ブラウザに送るステップをさらに含む、請求項7に記載の方法。
【請求項９】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、サーバにおいてツール動作を実行するステップを含み、前記方法は、
前記署名された事前実行動作を、前記ブラウザが実行されているコンピューティングデバイスに送るステップをさらに含む、請求項7に記載の方法。
【請求項１０】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含む、請求項7に記載の方法。
【請求項１１】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含む、請求項7に記載の方法。
【請求項１２】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含む、請求項7に記載の方法。
【請求項１３】
ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含む、請求項7に記載の方法。
【請求項１４】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含む、請求項7に記載の方法。
【請求項１５】
事前処理コードに署名するステップが、バリデータによって遂行される、請求項7に記載の方法。
【請求項１６】
事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を提供するステップを含む、請求項7に記載の方法。
【請求項１７】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ブラウザ内でツール動作を実行するステップを含む、請求項7に記載の方法。
【請求項１８】
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、前記ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含む、請求項17に記載の方法。
【請求項１９】
前記第1または第2の動作の結果を前記コンピューティングデバイスの前記メモリに記憶するステップをさらに含む、請求項18に記載の方法。
【請求項２０】
前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツの一部分を事前処理するステップを含む、請求項17に記載の方法。
【請求項２１】
前記コードの前記署名された事前処理された部分をウェブページコンテンツ内に含めるステップと、
前記ウェブページコンテンツを、前記ブラウザが動作しているコンピューティングデバイスに送るステップと
をさらに含む、請求項20に記載の方法。
【請求項２２】
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段と、
署名検証プロセスを用いて、前記事前実行動作のうちの少なくとも1つに関連付けられた前記署名を検証するための手段と、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めた場合、第1の動作を実行するための手段と、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めない場合、第2の動作を実行するための手段と
を含むコンピューティングデバイス。
【請求項２３】
第1の動作を実行するための手段が、前記事前実行動作を取り込むための手段を含む、請求項22に記載のコンピューティングデバイス。
【請求項２４】
第1の動作を実行するための手段が、前記事前実行動作に関連付けられたブラウザ動作をスキップするための手段を含む、請求項22に記載のコンピューティングデバイス。
【請求項２５】
第1の動作を実行するための手段が、前記事前実行動作に関連付けられたブラウザ動作を変更するための手段を含む、請求項22に記載のコンピューティングデバイス。
【請求項２６】
第2の動作を実行するための手段が、前記事前実行動作に関連付けられたブラウザ動作を実行するための手段を含む、請求項22に記載のコンピューティングデバイス。
【請求項２７】
署名検証プロセスを用いて、前記事前実行動作に関連付けられた署名を検証するための手段が、より良い結果を達成するために、前記事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するための手段を含む、請求項22に記載のコンピューティングデバイス。
【請求項２８】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、
前記事前実行動作に署名するための手段と
をさらに含む、請求項22に記載のコンピューティングデバイス。
【請求項２９】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３０】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３１】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３２】
ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３３】
事前処理コードに署名するための手段が、前記コンピューティングデバイスで実行されているバリデータアプリケーションにおいて前記事前処理コードに署名するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３４】
事前処理コードに署名するための手段が、特定のルールが前記事前実行動作において順守されていることを証明する署名を生成するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３５】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、前記コンピューティングデバイスで実行されているブラウザアプリケーション内でツール動作を実行するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３６】
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段が、メモリから、署名された事前処理コードを取り出すための手段を含む、請求項35に記載のコンピューティングデバイス。
【請求項３７】
前記第1または第2の動作の結果を記憶するための手段をさらに含む、請求項36に記載のコンピューティングデバイス。
【請求項３８】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む、請求項28に記載のコンピューティングデバイス。
【請求項３９】
前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、前記ウェブページコンテンツの一部分を事前処理するための手段を含む、請求項38に記載のコンピューティングデバイス。
【請求項４０】
ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、
前記事前実行動作に署名するための手段と、
前記署名された事前処理された動作を前記ウェブページコンテンツ内に含めるための手段と、
前記ウェブページコンテンツをコンピューティングデバイスに送るための手段と
を含むサーバ。
【請求項４１】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む、請求項40に記載のサーバ。
【請求項４２】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む、請求項40に記載のサーバ。
【請求項４３】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む、請求項40に記載のサーバ。
【請求項４４】
ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む、請求項40に記載のサーバ。
【請求項４５】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む、請求項40に記載のサーバ。
【請求項４６】
事前処理コードに署名するための手段が、特定のルールが前記事前実行動作において順守されていることを証明する署名を提供するための手段を含む、請求項40に記載のサーバ。
【請求項４７】
メモリと、
前記メモリに結合されたプロセッサと
を含み、前記プロセッサは、
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、
署名検証プロセスを用いて、前記事前実行動作のうちの少なくとも1つに関連付けられた前記署名を検証するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めた場合、第1の動作を実行するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めない場合、第2の動作を実行するステップと
を含む動作を実行するためのプロセッサ実行可能命令で構成される、コンピューティングデバイス。
【請求項４８】
第1の動作を実行するステップが、前記事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項４９】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項５０】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項５１】
第2の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項５２】
署名検証プロセスを用いて、前記事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、前記事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項５３】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項47に記載のコンピューティングデバイス。
【請求項５４】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項５５】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項５６】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項５７】
ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項５８】
事前処理コードに署名するステップが、前記コンピューティングデバイスで実行されているバリデータアプリケーションにおいて前記事前処理コードに署名するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項５９】
事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を提供するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項６０】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記コンピューティングデバイスで実行されているブラウザ内でツール動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項６１】
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、前記メモリから、署名された事前処理コードを取り出すステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項60に記載のコンピューティングデバイス。
【請求項６２】
前記第1または第2の動作の結果を前記メモリに記憶するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項61に記載のコンピューティングデバイス。
【請求項６３】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項53に記載のコンピューティングデバイス。
【請求項６４】
前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項63に記載のコンピューティングデバイス。
【請求項６５】
メモリと、
前記メモリに結合されたプロセッサと
を含み、前記プロセッサは、
ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと、
前記署名された事前処理された動作を前記ウェブページコンテンツ内に含めるステップと、
前記署名された事前実行動作を含む前記ウェブページコンテンツをコンピューティングデバイスに送るステップと
を含む動作を実行するためのプロセッサ実行可能命令で構成される、サーバ。
【請求項６６】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項６７】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項６８】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項６９】
ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項７０】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項７１】
事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記プロセッサが構成される、請求項65に記載のサーバ。
【請求項７２】
プロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記プロセッサ実行可能ソフトウェア命令が、プロセッサに、
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、
署名検証プロセスを用いて、前記事前実行動作のうちの少なくとも1つに関連付けられた前記署名を検証するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めた場合、第1の動作を実行するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めない場合、第2の動作を実行するステップと
を含む動作を実行させるように構成される、非一時的コンピュータ可読記憶媒体。
【請求項７３】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、前記事前実行動作を取り込むステップを含むように動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７４】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７５】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７６】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第2の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７７】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、署名検証プロセスを用いて、前記事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、前記事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７８】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと
をさらに含む動作を実行させるように構成される、請求項72に記載の非一時的コンピュータ可読記憶媒体。
【請求項７９】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８０】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８１】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８２】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８３】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、バリデータが実行されているコンピューティングデバイスにおいて前記事前処理コードに署名するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８４】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８５】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ブラウザ内でツール動作を実行するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８６】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、前記ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含むように動作を実行させるように構成される、請求項85に記載の非一時的コンピュータ可読記憶媒体。
【請求項８７】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、前記第1または第2の動作の結果を前記コンピューティングデバイスの前記メモリに記憶するステップをさらに含む動作を実行させるように構成される、請求項86に記載の非一時的コンピュータ可読記憶媒体。
【請求項８８】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８９】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行させるように構成される、請求項88に記載の非一時的コンピュータ可読記憶媒体。
【請求項９０】
サーバ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記サーバ実行可能ソフトウェア命令が、サーバに、
ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと、
前記署名された事前処理された動作を前記ウェブページコンテンツ内に含めるステップと、
前記署名された事前実行動作を含む前記ウェブページコンテンツをコンピューティングデバイスに送るステップと
を含む動作を実行させるように構成される、非一時的コンピュータ可読記憶媒体。
【請求項９１】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９２】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９３】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９４】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９５】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９６】
前記記憶されたサーバ実行可能ソフトウェア命令は、前記サーバに、事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される、請求項90に記載の非一時的コンピュータ可読記憶媒体。
【請求項９７】
クライアントメモリ、および前記クライアントメモリに結合されたクライアントプロセッサを含む、クライアントデバイスと、
サーバメモリ、および前記サーバメモリに結合されたサーバプロセッサを含む、サーバと
を含むシステムであって、
前記クライアントプロセッサは、
各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、
署名検証プロセスを用いて、前記事前実行動作のうちの少なくとも1つに関連付けられた前記署名を検証するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めた場合、第1の動作を実行するステップと、
前記署名検証プロセスが前記事前実行動作に関連付けられた前記署名を認めない場合、第2の動作を実行するステップと
を含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記サーバプロセッサは、
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、
前記事前実行動作に署名するステップと、
前記署名された事前処理された動作を前記ウェブページコンテンツ内に含めるステップと、
前記署名された事前実行動作を含む前記ウェブページコンテンツを前記クライアントデバイスに送るステップと
を含む動作を実行するためのサーバ実行可能命令で構成される、システム。
【請求項９８】
1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、前記署名された事前処理された動作を含むウェブページコンテンツを前記サーバから受け取るステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項９９】
第1の動作を実行するステップが、前記事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項１００】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項１０１】
第1の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項１０２】
第2の動作を実行するステップが、前記事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項１０３】
署名検証プロセスを用いて、前記事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、前記事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令で前記クライアントプロセッサが構成される、請求項97に記載のシステム。
【請求項１０４】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【請求項１０５】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【請求項１０６】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【請求項１０７】
ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【請求項１０８】
ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【請求項１０９】
事前処理コードに署名するステップが、特定のルールが前記事前実行動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのサーバ実行可能命令で前記サーバプロセッサが構成される、請求項97に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の記載
本願は、発明の名称を「外部コード証明を用いたウェブブラウジングオーバヘッドの低減」とした2012年1月26日出願の米国仮特許出願第61/591141号の優先権を主張し、その内容全体を引用により本明細書に組み込む。
【背景技術】
【０００２】
最近のブラウザ技術の大きな発展にもかかわらず、ウェブブラウザには概して複雑な計算集約的タスクを実行する能力が欠如したままである。上記および他の制約に対処するために、一部のウェブブラウザは、そのタスク/処理の一部または全部をリモートサーバにオフロードすることがある。たとえば、一部のウェブブラウザ(たとえば、Opera(商標)Mini)は、ブラウザに送る前にウェブページを処理し画像ファイルに圧縮するサーバにウェブページを要求するように構成することができる。そのようなシステムでは、ブラウザは単に画像を受け取りレンダリングするだけであり、ページを表示することに関連した処理/タスクのほとんどすべての実行をサーバに頼っている。
【０００３】
他のウェブブラウザ(たとえば、Amazon silk)は、一部のタスク/処理のみがサーバにオフロードされる分割アーキテクチャを使用することがある。しかしながら、この分割アーキテクチャは一般に、所定のサーバおよび独自仕様のブラウザを使用する必要がある。その上、(独自仕様かどうかを問わず)ウェブブラウザは、既に実行されているタスクを、または、(たとえば、コンテンツに対する最近の更新/変更などの観点から)事前処理された結果が最新であるかどうかを、常に完全に通知されるわけではない。事前処理コードの妥当性を保証するための機構がなければ、ブラウザは、関連するページをレンダリングするために、コードが効率的に符号化されているかどうか、および/または、必要に応じて実行されることが他の形で信頼され得るかどうかを決定することができない。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様が、ブラウザでコンテンツを処理するための方法であって、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツをブラウザ内に受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む方法を含む。
【０００５】
一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含む。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含む。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含む。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含む。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含む。さらなる態様では、方法は、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ブラウザ内でツール動作を実行するステップを含む。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含む。さらなる態様では、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、オフラインツールにおいてツール動作を実行するステップを含み、方法は、署名された事前実行動作をブラウザに送るステップをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、サーバにおいてツール動作を実行するステップを含み、方法は、署名された事前実行動作を、ブラウザが実行されているコンピューティングデバイスに送るステップをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScript（登録商標）を生成するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの��前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含む。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含む。さらなる態様では、方法は、コードの署名された事前処理された部分をウェブページコンテンツ内に含めるステップと、ウェブページコンテンツを、ブラウザが動作しているコンピューティングデバイスに送るステップとをさらに含む。さらなる態様では、事前処理コードに署名するステップは、バリデータによって達成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含む。
【０００６】
さらなる態様は、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段と、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するための手段と、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するための手段と、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するための手段とを含むコンピューティングデバイスを含む。一態様では、第1の動作を実行するための手段が、事前実行動作を取り込むための手段を含む。さらなる態様では、第1の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作をスキップするための手段を含む。さらなる態様では、第1の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作を変更するための手段を含む。さらなる態様では、第2の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作を実行するための手段を含む。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するための手段が、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するための手段を含む。さらなる態様では、デバイスが、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、事前実行動作に署名するための手段とをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、コンピューティングデバイスで実行されているブラウザアプリケーション内でツール動作を実行するための手段を含む。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段が、メモリから、署名された事前処理コードを取り出すための手段を含む。さらなる態様では、コンピューティングデバイスが、第1または第2の動作の結果をメモリに記憶するための手段をさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツの一部分を事前処理するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、コンピューティングデバイスで実行されているバリデータアプリケーションにおいて事前処理コードに署名するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、特定のルールが事前処理動作において順守されていることを証明する署名を生成するための手段を含む。
【０００７】
さらなる態様は、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、事前実行動作に署名するための手段と、署名された事前処理された動作をウェブページコンテンツ内に含めるための手段と、ウェブページコンテンツをコンピューティングデバイスに送るための手段とを含むサーバを含む。一態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、特定のルールが事前処理動作において順守されていることを証明する署名を提供するための手段を含む。
【０００８】
さらなる態様は、メモリと、メモリに結合されたプロセッサとを含み、プロセッサは、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される、コンピューティングデバイスを含む。一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとをさらに含む動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、コンピューティングデバイスで実行されているブラウザ内でツール動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、メモリから、署名された事前処理コードを取り出すステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップをさらに含む動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、コンピューティングデバイスで実行されているバリデータアプリケーションにおいて事前処理コードに署名するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。
【０００９】
さらなる態様は、メモリと、メモリに結合されたプロセッサとを含み、プロセッサは、ウェブページコンテンツを受け取るステップと、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップと、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをコンピューティングデバイスに送るステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される、サーバを含む。一態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。
【００１０】
さらなる態様は、プロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、プロセッサ実行可能ソフトウェア命令が、プロセッサに、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツをブラウザ内に受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む、ブラウザでコンテンツを処理するための動作を実行させるように構成される、非一時的コンピュータ可読記憶媒体を含む。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとをさらに含む動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ブラウザ内でツール動作を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含むように動作を実行させるように構成される。さらなる態様で���、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップをさらに含む動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、バリデータが実行されているコンピューティングデバイスにおいて事前処理コードに署名するステップを含むように動作を実行させるように構成される。記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される。
【００１１】
さらなる態様は、サーバ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、サーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツを受け取るステップと、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップと、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをコンピューティングデバイスに送るステップとを含む動作を実行させるように構成され、サーバプロセッサは、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとを含む動作を実行するためのサーバ実行可能命令で構成される、非一時的コンピュータ可読記憶媒体を含む。
【００１２】
一態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される。
【００１３】
さらなる態様は、クライアントメモリ、およびクライアントメモリに結合されたクライアントプロセッサを含む、クライアントデバイスと、サーバメモリ、およびサーバメモリに結合されたサーバプロセッサを含む、サーバとを含むシステムであって、クライアントプロセッサは、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される。一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをクライアントデバイスに送るステップとを含む動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、署名された事前処理された動作を含むウェブページコンテンツをサーバから受け取るステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。
【００１４】
本明細書に組み込まれ本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示し、上記の概略的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１５】
【図１】様々な態様を実装するために適切な例示的なネットワークにおける論理構成要素およびフローを示す構成要素ブロック図である。
【図２Ａ】外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための態様方法のプロセスフロー図である。
【図２Ｂ】外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための態様方法のプロセスフロー図である。
【図３】外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための別の態様方法のプロセスフロー図である。
【図４】様々な態様とともに使用するのに適切な例示的なモバイルデバイスを示す図である。
【図５】様々な態様とともに使用するのに適切な例示的なパーソナルコンピュータを示す図である。
【発明を実施するための形態】
【００１６】
添付の図面を参照して様々な態様を詳細に説明する。同じまたは同様の部分を指すために、可能な場合は、図面全体にわたって同じ参照番号を使用する。特定の例および実装形態に対して行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１７】
「コンピューティングデバイス」という用語は、本明細書では、サーバ、パーソナルコンピュータ、モバイルデバイス、セルラー電話、携帯情報端末(PDA)、パームトップコンピュータ、ワイヤレス電子メール受信機(たとえば、Blackberry(登録商標)およびTreo(登録商標)デバイス)、マルチメディアインターネット対応セルラー電話(たとえば、Blackberry Storm(登録商標))、全地球測位システム(GPS)受信機、ワイヤレスゲームコントローラ、パーソナルコンピュータ、およびウェブブラウザタイプアプリケーションで構成されるプログラマブルプロセッサを含む同様の携帯電子デバイスのうちの1つまたはすべてを総称的に指すために使用される。様々な態様は、特に、処理電力が限られた携帯電話のようなモバイルデバイスで有用であるが、一般に、動的および/またはスクリプト言語で書かれたスクリプトおよびアプリケーションを実行する任意のコンピューティングデバイスで有用である。
【００１８】
「署名」および「証明」という用語は本明細書では総称的に使用され、コード、スクリプト、データ、またはコンテンツを符号化またはラベリングして、コード/スクリプト/データ/コンテンツがオフラインツールまたはバリデータによって事前処理されたかつ/または他の形でクライアントの要求に合致すると、クライアント(たとえば、ウェブブラウザ)が決定できるようにする任意の方法を指すことができる。
【００１９】
「動的言語」および「スクリプト言語」という用語は本出願では総称的に使用され、任意の動的言語、スクリプト言語、マークアップ言語、スタイルシート、または、実行時に解釈および/またはコンパイルされるプログラム(本明細書では「コード」または「スクリプト」)を書くために使用される任意のインタープリタ型言語を指すことができる。したがって、本出願では、「スクリプト言語」という用語は、ソースコードまたはバイトコードから解釈される言語、あるいは従来ネイティブマシンコードにコンパイルされるプログラムとともに実行される言語に限定されるべきではない。本出願の範囲内のスクリプト言語の例には、例えば、JavaScript、カスケーディングスタイルシート、HTML、Python、およびRuby、ならびにJava（登録商標）および将来開発され得る他の言語が含まれる。
【００２０】
本明細書では、様々な実施形態によって使用されまたは扱われ得るスクリプト言語の便宜的な例として、JavaScriptおよび関連する用語を使用して、様々な態様を説明する。しかしながら、本明細書のJavaScriptに関係する例およびJavaScript言語に対する他の言及は、単に例示が目的であり、その特定のタイプの動的スクリプト言語に説明または実施形態を限定しないことは理解されよう。したがって、特許請求の範囲は、特に指定されない限りJavaScriptを必要とすると解釈されるべきではない。
【００２１】
「コード」および「スクリプト」という用語は、本明細書では総称的および互換的に使用され、アプリケーションによって使用またはレンダリングされ得るデータおよびコンテンツを包含することは理解されよう。また、本明細書に開示される様々な態様は、コードとコンテンツの両方が含まれるアプリケーション(たとえば、ブラウザ)の任意の部分に適用可能とされ得ることも理解されよう。
【００２２】
様々な態様で、特定のブラウザ動作が、時間と空間の両方で(すなわち、先行して、異なるマシンで実行される)他のブラウザ動作と分離されるように、ブラウザ動作が2つの部分(オフラインツール部分とブラウザ部分)に分離され得る。署名/証明は、これら2つの部分の結果が実行時に安全に結合できることを保証するために使用され得る。
【００２３】
前述のように、最近のブラウザ技術の大きな発展にもかかわらず、ウェブブラウザは概して複雑な計算集約的タスクを実行する能力が欠如したままである。様々な態様は、ウェブブラウザ自体と分離される外部または「オフライン」ツールを使用して、いくつかのタスクを先行して実行することを可能にすることによって、上記および他の制約を解消する。たとえば、ブラウザは、オフライン/外部ツールによって特定の変換、最適化、計算、および/または分析を先行して行うことが可能なように構成することができ、それらの結果は、ブラウザによって受け取られ、ブラウザの性能を向上するために実行時に使用され得る。オフライン/外部ツールは、たとえば、ペイロード中に使用されないカスケーディングスタイルシート(CSS)の部分をマークすることによって、使用されない部分をブラウザが容易に識別できるようにデータを事前処理することができる。オフライン/外部ツールは、ソース対ソース変換を行う(たとえば、JavaScriptを取り込んで最適化されたJavaScriptを生成する)こともでき、生成/変換されたコード(たとえば、JavaScript)は、ブラウザが処理、実行、および/または表示をするためにコンテンツに埋め込まれてよい。
【００２４】
元のコードと後の生成されたコードはともに同じフォーマットとされ得る(たとえば、両者ともJavaScriptとされ得る)ので、ウェブブラウザは、外部/オフラインツールによってすでに実行されているタスクについて、(たとえば、コンテンツに対する最近の更新/変更などの観点から)事前処理されたタスクが依然として最新であるかについて、または、障害または違反(たとえば、不正な実行、制約されない障害など)が、たとえば互換性のない前提により生じないように、事前処理されたタスクが実行されたかについて、完全に通知されないことがある。
【００２５】
これらおよび他の理由から、ブラウザは、実行前に、生成されたコードの妥当性を検証するために、いくつかの動作を行うことが必要な場合がある。この検証プロセスは、ブラウザとオフラインツールとの間でかなりの量の補足情報(たとえば、タスクおよびバージョン情報、サポートされるブラウザ、事前処理方法など)を受け渡すこと、および/または(たとえば、Javaクラスをロードしたときに要求されるように)受け取ったコードの本体全体にバイトコード検証を実行することを必要とすることがある。大量の補足情報の受け渡しにより、ブラウザにオーバヘッドが追加される。検証オーバヘッドは、単にすべての段階を実行し事前処理されたデータを無視するよりも大きくなることがある。追加のオーバヘッドによりオフラインツールを実行する利益が打ち消されることがある。
【００２６】
様々な態様は、1つまたは複数の事前処理されたスクリプト/コマンド/データ/コンテンツ(本明細書では総称的に「スクリプト」または「コード」)に関連付けられた署名または証明を利用するフレームワークを提供し、それによって、ウェブブラウザが、スクリプトを検証、確認、および/または信頼し、先行してブラウザによって生成されメモリに記憶されたまたはオフライン/外部ツールによって提供されたコードに依拠することによって、関連付けられたスクリプトをさらに処理することをスキップすることをできるようにする。
【００２７】
様々な態様で、事前処理されているタスク(たとえば、変換、最適化、コンパイル、計算、分析など)をブラウザが決定することを可能にするやり方で、そして、追加の処理を実行することなく事前処理コードが信頼できる(すなわち、事前処理コードが正しく実行される)ということをブラウザが信頼することができるように、事前処理コードを検証し符号化しブラウザに渡す。
【００２８】
様々な態様で、オフライン/外部ツールによって生成され、ウェブページコンテンツの他の部分に含まれたコード/データに、「検証されたスタンプ」または「署名」が埋め込まれることがある。この署名は、(たとえば、検証識別子を介して)達成されたタスクを識別することができる。また、この署名により、ブラウザが、コードが効率的に符号化されていて追加の処理またはブラウザ検証なしに実行されてよいことを確認することを可能にすることができる。したがって、一態様では、扱いにくい量の補足情報をブラウザに渡すことに代えて、生成されたコードを、コードに(たとえば、コメント、注釈などで)埋め込まれる署名によって署名することができ、それにより、クライアントアプリケーション(たとえば、ブラウザ)が、達成されたタスクを容易に識別し、コードが安全に実行されることを信頼することが可能になる。一態様では、署名は、的確に定義され構造化され効率的に符号化された補足情報とすることができる。
【００２９】
様々な態様で、「検証されたスタンプ」または「署名」をコードに埋め込むことによって、事前処理コードを検証するためにブラウザが任意の追加の動作を実行する必要性がなくなり、したがって、ウェブブラウジングオーバヘッドが低減し性能が向上する。
【００３０】
一態様では、先行して処理されたコードを確認し検証するための署名の使用は、ウェブページを処理した結果をメモリに記憶するときにウェブブラウザによって用いられることもある。この態様では、ブラウザがウェブページをレンダリングしながらウェブページスクリプトを処理する際、処理されたスクリプトを、次にページがレンダリングされるときに再使用するため、メモリに記憶することができる。ウェブページは頻繁に変わるので、ページが先行してレンダリングされたものと同じであるかを決定するために、従来は、プロセッサがページスクリプトをかなり処理する必要がある。本態様では、コードが処理された後にウェブブラウザがメモリに保存されたコードに署名することを可能にする。次いで、ブラウザは署名を使用して、保存されたコードが適切にページをレンダリングするものとして信頼できるかを決定することができる。たとえば、ウェブページコンテンツが最後にウェブブラウザによってレンダリングされてから変化した場合、署名を検証するプロセスがコンテンツの変化をブラウザに通知することができ、その場合、ブラウザは、メモリから取り出された先行のコードを再使用する代わりに、スクリプトを実行することを選択することができる。
【００３１】
事前処理コードスタンプ/署名/証明の埋め込みにより、外部/オフラインツールとブラウザとの間の効率的な通信プロトコルを提供することができ、それにより、ブラウザが、受け取ったコードの安全性または信頼性(すなわち、不適切なメモリアクセスがない、コードを生成してから重要な変更がない、コードが異常を引き起こさないなど)を確認できるようになる。
【００３２】
前述のように、特定のブラウザ動作が、時間と空間の両方で(たとえば、先行して、または異なるマシンで実行される)他の動作と分離されるように、ブラウザ動作が2つの部分(オフラインツール部分とブラウザ部分)に分離され得る。一態様では、オフラインツール(たとえば、静的および/または動的分析を実行するツール)が、事前処理コードを生成し、コードが特定のルールを順守していることを証明するためにコードに署名し、署名したコードをブラウザ内に埋め込むことができる。一態様では、事前処理コードを外部バリデータによって検証することができ、外部バリデータは、オフラインツールの結果(すなわち、事前処理コード)に署名することができる。結果は、プライベート鍵によって、または、タグ、属性、フォーマット化コメントなどの形式で既知のキーワードを含めることによって署名され得る。ブラウザは、コードが既知の外部/オフラインツールによって処理されたか、コードが最新であるか、および/またはコードが安全もしくは信頼できるかを決定するために、暗号化証明書を使用することができる。たとえば、ブラウザは、バリデータ公開鍵を使用して埋め込まれた署名を検証し、コードが信頼されるバリデータによってまたはその期待されるバージョンによって実際に処理されたかを決定することができる。ブラウザがコード内の署名を検証した場合、ブラウザは、何らかの追加のオーバヘッドを送ること、追加の情報を要求すること、またはコード検証に一般的に必要とされる任意の追加の処理/分析を実行することなしに、コードが安全に実行されると信頼することが可能である。このプロセスは、ブラウザが事前処理コードに依拠しそのコードを使用することを可能にし、それによって、クライアントデバイスにおける処理オーバヘッドを低減し、性能を向上させる。
【００３３】
ウェブブラウザが、処理されたコードを記憶し、埋め込まれた署名を使用して、記憶したコードが信頼できることを検証する、態様では、ブラウザそれ自体がバリデータの役割をすることを除いて、プロセスは同様のやり方で進行する。
【００３４】
図1は、様々な態様による外部コード証明を用いてウェブブラウジングオーバヘッドを低減するために使用され得る例示的なネットワーク100を示す。ネットワーク100は、インターネット104を介してコンテンツをクライアントマシン106に送達するウェブ/コンテンツサーバ102を含むことができる。クライアントマシン106は、ネットワークインターフェースモジュール108、ディスプレイモジュール116、メモリ118、およびウェブブラウザ110を含むことができる。ブラウザ110は、JavaScriptを解釈し実行するためのJavaScriptエンジン112を含むことができる。
【００３５】
ネットワーク100はまた、ブラウザ動作を実行するように構成されたオフライン/外部ツール114を含むことができる。外部/オフラインツール114は、ウェブサーバ102、別個のサーバ、プロキシ、またはクライアントマシン106など、ネットワーク100の任意の場所に実装することができる。外部/オフラインツール114は、独立したプロセス、またはブラウザ110の一部として実装することができる。外部/オフラインツール114は、コードを生成する(たとえば、プリプロセッサであり得る)、または静的な事前処理コード(たとえば、開発者によって提供されたコード、ブラウザの先行実行セッションの結果など)をブラウザ110に送るように構成され得る。
【００３６】
ブラウザ110は、特定のブラウザ動作(たとえば、変換、最適化など)をオフライン/外部ツール114にオフロードして、オフロードされた動作が、時間および/または空間で(すなわち、先行して、異なるマシンで実行される)他の動作と分離されるようにするように構成され得る。外部/オフラインツール114は、Javascriptをコンパイルし、1つまたは複数のプラットフォーム(たとえば、Androidなど)のためのコードを生成し、生成したコードに署名を用いて署名することができる。オフライン/外部ツール114によって生成されたコードは、ブラウザによって使用されたコードと同じタイプとすることができる(すなわち、ソース対ソース変換を行う)。たとえば、オフラインツールは、JavaScriptコードを入力として取り込み、その出力として最適化(および署名)されたJavaScriptコードを生成する。生成されたコードは、コンパイルされた実行可能コード(たとえば、一連の完全にコンパイルされた関数)であってよい。署名の存在によって、ブラウザ110は、生成されたコードを直接呼び出すことが可能になり、そして、そのコードの実行が(たとえば、JavaScriptエンジン112を介して)ブラウザ110それ自体によってJavaScriptコードが生成された場合とまったく同じ動作を生じると信頼することが可能になる。これにより、ブラウザ/ユーザの視点から、JavaScriptコンパイルの実質的にすべてのコストが効果的に取り除かれる。
【００３７】
一態様では、外部/オフラインツール114は、ブラウザ110の一部であり、クライアントマシン106が電源に接続されているかつ/または遊休状態であることをクライアントマシン自体が検出したときにスクリプトを事前処理するプリプロセッサを含む。
【００３８】
一態様では、外部/オフラインツール114は、事前処理コードに署名し、そのコードを後で使用するためにメモリに記憶することができる。
【００３９】
一態様では、署名をサポートしないブラウザに署名が影響を与えないように、生成されたコードに署名を埋め込むことができる。一態様では、オフライン/外部ツールは、埋め込まれたコードが、未修正のJavaScriptエンジンによって無視され、埋め込まれたコードを理解するよう修正されたJavaScriptエンジンによって処理されることが可能なように、コードを埋め込むように構成され得る。一態様では、オフライン/外部ツールは、コメントまたは注釈でコードを埋め込むように構成され得る。
【００４０】
図2Aは、外部コード証明を使用することによってウェブブラウジングオーバヘッドを低減する態様方法200を示す。ブロック202では、ブラウザ動作は、オフラインツール部分とブラウザ部分に分離され得る。ブロック204では、オフラインツールは、ブラウザのコードの実行に先立ってオフラインツール部分を実行し、事前処理コードを生成する。ブロック206では、オフラインツールは、署名をコード内に埋め込むことによって事前処理コードに署名することができる。一態様では、ブロック206の一部として、事前処理コードは、バリデータによって検証することができ、バリデータは、ハッシュ型の署名動作で使用されるプライベート鍵または他の検証可能な鍵を用いて、オフラインツールの結果(すなわち、事前処理コード)に署名することができる。様々な既知の署名プロセスのいずれかが、事前処理コードのコンテンツに基づいて署名を生成するのに使用され得る。事前処理コードに署名することによって、受信デバイスは、コードを受け取ったとき、コードに対し同じまたは類似のプロセスを実行することで署名を検証することができる。あるいは、署名は、事前処理コードに基づいてもよい。ブロック208で、署名された事前処理コードをウェブコンテンツの他の部分とともにブラウザに送ることができる。
【００４１】
ブロック210では、ブラウザが、署名されたコードをウェブページコンテンツの他の部分とともに受け取ることができる。ブロック212では、ブラウザは、受け取ったコード内の署名を評価することができる。たとえば、ブロック212の一部として、ブラウザが、バリデータ公開鍵を使用して、コードが信頼されたバリデータによって実際に処理されたかどうかを検証することができる。さらにまたは代わりに、ブラウザは、事前処理されたウェブページ内のスクリプトに対するハッシュ関数を実行して、そのコードに特徴的なハッシュ値を得ることができる。この検証プロセスは、事前処理コードがウェブページ内の未処理のスクリプトに対応することと、信頼できるオフラインツールによって事前処理が行われたこととの両方を確認することができる。
【００４２】
決定ブロック214では、ブラウザは、署名が一致するかどうかを決定することができる。ブラウザが、生成および埋め込みされた署名が一致すると決定した場合(すなわち、決定ブロック214=「Yes」)、ブラウザは、クライアント部分とオフラインツール部分を実行時に組み合わせ、署名されたコードをその安全性を信頼して実行することができる。ブラウザが、署名が一致しないと決定した場合(すなわち、決定ブロック214=「No」)、ブロック218で、ブラウザは、事前処理コードが提供されなかったかのように、スクリプトを実行することによって、ページをレンダリングすることができる。したがって、署名の埋め込みは、コードが安全である(たとえば、正しい動作である、無許可のメモリアクセスがないなど)とブラウザが信頼できるようにすることによって、2つの部分の結果が実行時に安全に組み合わせられることを保証することにより、特定のブラウザ動作が、時間と空間の両方で(すなわち、先行して、異なるマシンで実行される)他の動作から分離されることを可能にする。
【００４３】
図2Bは、外部コード証明を使用することによってウェブブラウジングオーバヘッドを低減する態様方法250を示す。ブロック252では、ブラウザは、オフラインツール部分から入力を受け取ることができる。ブロック254では、ブラウザは、署名された事前処理コード/コンテンツを受け取ることができる。決定ブロック256では、ブラウザは、(たとえば、生成および埋め込みされた署名が一致すると決定することによって、)受け取った署名された事前処理コード/コンテンツ内に何らかの有効な署名が存在すると決定する場合がある。有効な署名が存在しないと決定した場合(すなわち、決定ブロック256=「No」)、ブロック258で、ブラウザは、事前処理コードが提供されなかったかのように、すべての受け取ったコードに対する完全な動作を実行することによって、ページをレンダリングすることができる。有効な署名が存在すると決定した場合(すなわち、決定ブロック256=「Yes」)、ブロック260で、ブラウザは、事前処理コードを実行し、コード/コンテンツの署名されていない部分に関する完全な検証を実行するだけで、ページをレンダリングすることができる。オプションブロック262で、オプションとして、ブラウザは、次の実行セットについての署名および結果を生成し、それらを後で取り出すためにローカルまたはリモートで記憶してもよい。様々な既知の署名プロセスのいずれかが、事前処理コードのコンテンツに基づくことが可能な署名を生成するのに使用され得る。事前処理コードに署名することによって、受信デバイスは、コードをメモリから入手したとき、またはアクセスされたウェブページの一部として受け取ったとき、コードに対し同じまたは類似のプロセスを実行することで署名を検証することができる。
【００４４】
図3は、ブラウザが後で同じページをレンダリングするときにコードが再使用できるかを決定できるやり方で、処理されたコードを保存するために、コード署名方法を使用することによってウェブブラウジングオーバヘッドを低減する別の態様方法300を示す。ブロック302では、ブラウザは、特定のウェブサイトを訪問するよう求める要求を受け取ることができる。決定ブロック304では、ブラウザは、これが、所与の時間枠内でそのサイトが訪問された最初の時かどうかを決定することができる。それが最初の訪問であるとブラウザが決定した場合(すなわち、決定ブロック304=「Yes」)、ブロック306では、ブラウザは、従来の方法を用いてウェブページコンテンツを処理することができる。ブロック308では、ブラウザは、処理されたコードに署名し、生成された署名を含めるまたは埋め込む。ブロック310では、署名された処理されたコードを、ウェブブラウザが動作しているデバイスのメモリに記憶することができる。
【００４５】
それがウェブブラウザへの最初の訪問でないとブラウザが決定した場合(すなわち、決定ブロック304=「No」)、ブロック312で、署名されたコードをメモリから取り出すことができる。ブロック314では、ブラウザは、コードに含まれたまたは埋め込まれた署名を検証することができる。このプロセスは、ウェブページコンテンツ内の対応するスクリプトに対して署名プロセス(たとえば、ハッシュ関数)を実行して、別の署名を生成することを含むことができる。決定ブロック316では、ブラウザは、署名が一致するかどうかを決定することができる。事前処理されたウェブページ内のスクリプトに基づいて署名が生成された場合、署名の比較は、記憶された先行して処理されたコードが、現在ダウンロードされたウェブページ内のものと同じスクリプトを実行することによって生成されたかどうかを、ブラウザが速やかに確認することを可能にする。署名が一致するとブラウザが決定した場合(すなわち、決定ブロック316=「Yes」)、ブロック320で、ブラウザは、署名されたコードを実行することができ、その署名されたコードは、記憶された先行して処理されたコードが最新のウェブページコンテンツ内のものと同じスクリプトを実行することによって生成されたものと検証されている。したがって、署名の一致により、ブラウザが、先行して記憶されたコードの実行が最新のウェブページを適切にレンダリングすると信頼することが可能である。ブラウザが、署名が一致しないと決定した場合(すなわち、決定ブロック316=「No」)、ブロック318で、ブラウザは、先行して処理されたコードがメモリに記憶されていなかった場合のように、ブロック306でウェブページをレンダリングするためにスクリプトを実行する動作を行う。
【００４６】
さらなる態様では、方法300の動作を方法200の動作と組み合わせて、ウェブブラウザが、ウェブページコンテンツとともにオフラインツールによって提供された事前処理コードを検証し使用し、ウェブページスクリプトの処理結果を署名とともに記憶し、先行して記憶されたコードに関連付けられた署名が検証されたとき、そのコードを再使用するようにすることができる。
【００４７】
様々な態様は、コード内に署名が存在しないことにより、ウェブページ内のスクリプトがまだ処理されてなく、したがってブラウザによって処理しなければならないことをJavaScriptエンジンに示すように構成され得る。一態様では、署名は、最適化を受け入れる利用可能な言語機能のうちの限られた一部のみがコードを生成するために使用されていること、および、そのコードの実行が、使用されるいくつかの機能をもたらさないことを、ブラウザに示すことができる。一態様では、署名は、利用可能な言語機能(たとえば、型検査)の拡張セットがコードを生成するために使用されていること、および、ブラウザが同様の動作の実行を差し控えることができることを、ブラウザに示すことができる。
【００４８】
一態様では、オフライン/外部ツールは、コードを事前コンパイルするコンパイラである。
【００４９】
様々な実施形態で、セキュリティの問題がなく、先行の動作または最適化の妥当性を保証することを理解されたい。様々な態様方法は、実行可能コードおよびJavaScript(登録商標)コードのみを対象とするものではなく、ブラウザの任意の部分、コードとコンテンツの両方に適用されてもよい。
【００５０】
様々な態様では、ツール(たとえば、JavaScriptコンパイラ、パーサ、CSSプロセッサ、レイアウトエンジンなど)をオフライン部分とオンライン部分に分割することができる。オフライン部分は、コードに対してセットの動作を実行し、実行された動作を捕捉する1つまたは複数の署名を生成することができる。オンライン部分は、署名を検査して、特定の動作を、スキップできるか、簡略化もしくは近似した形式で実行できるか、より良い結果を達成するために異なるように実行できるか、および/または、クライアントが事前検証されたコードを他の形で利用できるかを決定することが可能である。できない場合、オンライン部分は、入力(コードまたはコンテンツ)に対し(潜在的に比較的最適化されていない)同じ動作を再び実行することができる。
【００５１】
様々な態様によって実現される利益の1つは、特定の動作がオンライン部分でスキップまたは簡略化できるかどうかを決定する廉価な方法としての署名の使用である。オフライン部分は、サーバ上に実装されてもクライアント上に実装されてもよい。一態様では、オフライン部分は、クライアント上に実装され、コンピューティングデバイスが遊休状態のとき実行され得る。
【００５２】
様々な態様は、任意の様々なコンピューティングデバイスに実装され得る。モバイルコンピューティングデバイスの例を図4に示し、ノートブックコンピュータの例を図5に示す。典型的なモバイルコンピューティングデバイス400は、一般的に図4に示す構成要素を有する。たとえば、モバイルコンピューティングデバイス400は、内部メモリ402およびタッチ表面入力デバイス/ディスプレイ403に結合されたプロセッサ401を含むことができる。タッチスクリーンディスプレイ403は、たとえば、抵抗検知タッチスクリーン、容量検知タッチスクリーン、赤外線検知タッチスクリーン、音響/圧電検知タッチスクリーンなどである。様々な態様は、いかなる特定のタイプのタッチスクリーンディスプレイ403またはタッチパッド技術にも限定されない。さらに、コンピューティングデバイス400は、プロセッサ401に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ405に接続された、電磁放射を送受信するためのアンテナ404を有することができる。コンピューティングデバイス400は、ユーザの入力を受け取るための物理ボタン408を含むこともできる。
【００５３】
様々な態様は、モバイルコンピューティングデバイスの大幅な性能向上を実現することができるが、パーソナルコンピュータおよびラップトップコンピュータを含む他の形態のコンピューティングデバイスも、動的言語スクリプトの事前パースから利益を得ることができる。このようなコンピューティングデバイスは、典型的には、例示的パーソナルラップトップコンピュータ500を表す図5に示す構成要素を含む。そのようなパーソナルコンピュータ500は、一般に、揮発性メモリ502、およびディスクドライブ503のような大容量不揮発性メモリに結合されたプロセッサ501を含む。コンピュータ500は、プロセッサ501に結合されたコンパクトディスク(CD)および/またはDVDドライブ504を含むこともできる。コンピュータデバイス500は、プロセッサ401をネットワークに結合するためのネットワーク接続回路505など、データ接続を確立するまたは外部メモリデバイスを受け入れるためプロセッサ401に結合されるいくつかのコネクタポートを含むこともできる。コンピュータ500はさらに、コンピュータ技術分野で周知のように、キーボード508、マウス510などのポインティングデバイス、およびディスプレイ509に結合することができる。
【００５４】
様々な態様はまた、図6に示したサーバ600など様々な市販のサーバデバイスのいずれに実装されてもよい。そのようなサーバ600は、典型的にはプロセッサ601を含み、複数のプロセッサシステム611、621、631を含むことができ、プロセッサシステムのうちの1つまたは複数は、マルチコアプロセッサであるかまたはマルチコアプロセッサを含むことができる。プロセッサ601は、揮発性メモリ602、およびディスクドライブ603などの大容量不揮発性メモリに結合することができる。サーバ600はまた、プロセッサ601に結合されたフロッピー（登録商標）ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ606を含むことができる。サーバ600は、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークのようなネットワーク605とデータ接続を確立するためプロセッサ601に結合されたネットワークアクセスポート604を含むことができる。
【００５５】
プロセッサ401、501、601は、本明細書で説明する様々な態様の機能を含む様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップとすることができる。いくつかのモバイルデバイスでは、ワイヤレス通信機能に専用の1つのプロセッサ、および他のアプリケーションの実行に専用の1つのプロセッサなど、複数のプロセッサ401、501、601が設けられてよい。典型的には、ソフトウェアアプリケーションは、アクセスされてプロセッサ401、501、601にロードされる前に、内部メモリ402、502、602に記憶され得る。いくつかのモバイルデバイスでは、プロセッサ401、501、601は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含むことができる。いくつかのモバイルデバイスでは、セキュアメモリが、プロセッサ401、501、601に結合された別個のメモリチップ内にあり得る。内部メモリ402、502、602は、揮発性メモリまたはフラッシュメモリのような不揮発性メモリ、あるいは両方の混合とすることができる。本明細書では、メモリに対する一般的な言及は、内部メモリ402、502、602、モバイルデバイスに接続されたリムーバブルメモリ、およびプロセッサ401、501、601自体の内部のメモリを含む、プロセッサ401、501、601によってアクセス可能なすべてのメモリを指す。
【００５６】
前述の方法の説明およびプロセスフロー図は、単に説明のための例として示しており、様々な態様のブロックを提示した順序で実行しなければならないことを要求するまたは示唆するものではない。当業者には理解されるように、前述の態様におけるステップの順序は任意の順序で実行され得る。「その後」、「次いで」、「次に」などの用語は、ブロックの順序を限定するものではなく、これらの用語は、単に方法の説明を通して読者を案内するために使用されている。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形の請求要素へのいかなる言及も、その要素を単数に限定すると解釈されるべきではない。
【００５７】
本明細書で開示した態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこのような互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは上記では概してそれらの機能について説明されている。そのような機能をハードウェアとして実装するかソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に応じて変わる。当業者は説明された機能を特定の適用例ごとに異なる方法で実装し得るが、そのような実装の決定が本発明の範囲からの逸脱をもたらすものと解釈すべきではない。
【００５８】
本明細書に開示された態様に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書に説明された機能を実行するように設計されたそれらの任意の組合せによって実装または実施され得る。汎用プロセッサは、マイクロプロセッサとすることができるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械としてもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連結した1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装されてよい。代替的に、いくつかのステップまたは方法が、所与の機能に固有の回路によって実行されてもよい。
【００５９】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装することができる。ソフトウェアで実装される場合、機能は、1つもしくは複数の命令またはコードとして非一時的コンピュータ可読またはプロセッサ可読記憶媒体で記憶されまたは送信され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的プロセッサ可読媒体またはコンピュータ可読媒体上に存在できるプロセッサ実行可能ソフトウェアモジュールで実施され得る。非一時的プロセッサ可読媒体は、コンピューティングデバイスのコンピュータまたはプロセッサによってアクセスできる任意の利用可能な記憶媒体とすることができる。限定ではなく例として、そのような非一時的プロセッサ可読媒体またはコンピュータ可読媒体には、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、所望のプログラムコードを命令もしくはデータ構造の形態で搬送もしくは記憶するために使用され、コンピューティングデバイスのコンピュータもしくはプロセッサによってアクセスされ得る任意の他の媒体が含まれ得る。本明細書で使用されるディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピー（登録商標）ディスク、およびブルーレイディスクが含まれ、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体の範囲内に含まれるべきである。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込むことができる非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せもしくはセットとして存在することができる。
【００６０】
開示した態様の上記の説明は、当業者が本発明を作製または使用できるように提供されている。これらの態様に対する様々な修正が当業者には容易に明らかであり、本明細書で規定される一般的な原理は、本発明の趣旨または範囲を逸脱することなく他の態様に適用され得る。したがって、本発明は、本明細書に示した態様に限定されるものではなく、添付の特許請求の範囲ならびに本明細書に開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００６１】
100  ネットワーク
102  ウェブ/コンテンツサーバ
104  インターネット
106  クライアントマシン
108  ネットワークインターフェースモジュール
110  ウェブブラウザ
112  JavaScriptエンジン
114  外部ツール、オフライン/外部ツール
116  ディスプレイモジュール
118  メモリ
400  モバイルコンピューティングデバイス
401  プロセッサ
402  内部メモリ
403  タッチスクリーンディスプレイ
404  アンテナ
405  セルラー電話トランシーバ
408  物理ボタン
500  パーソナルラップトップコンピュータ
501  プロセッサ
502  揮発性メモリ
503  ディスクドライブ
504  コンパクトディスク(CD)および/またはDVDドライブ
505  ネットワーク接続回路
508  キーボード
509  ディスプレイ
510  マウス
600  サーバ
601  プロセッサ
602  揮発性メモリ
603  ディスクドライブ
604  ネットワークアクセスポート
605  ネットワーク
606  フロッピー（登録商標）ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
611  プロセッサシステム
621  プロセッサシステム
631  プロセッサシステム
【図１】
2015515657.tif 000003
【図２Ａ】
2015515657.tif 000004
【図２Ｂ】
2015515657.tif 000005
【図３】
2015515657.tif 000006
【図４】
2015515657.tif 000007
【図５】
2015515657.tif 000008
【図６】
2015515657.tif 000009
【国際調査報告】
2015515657.tif 000010
2015515657.tif 000011