(57)【特許請求の範囲】
【請求項１】
カスケーディングスタイルシート（ＣＳＳ）ファイルの圧縮を容易にするための方法であって、
前記ＣＳＳファイルに関連づけられたウェブページをホストするサーバにより、前記ＣＳＳファイルの第１のセレクタおよび第２のセレクタの繰り返されるコードを識別することによって、前記第１のセレクタおよび前記第２のセレクタを識別するステップであって、前記繰り返されるコードは前記第１のセレクタおよび前記第２のセレクタのそれぞれに現れる、ステップと、
前記第１のセレクタおよび前記第２のセレクタが前記ＣＳＳファイルにおいて隣接しているかどうかを判断するステップと、
前記第１のセレクタおよび前記第２のセレクタが隣接していないことに応じて、前記第１のセレクタと前記第２のセレクタとの間の第３のセレクタが前記第１のセレクタおよび前記第２のセレクタに含まれるプロパティを含むかどうかを判断するステップと、
前記第３のセレクタが前記プロパティを含まないことに応じて、前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージすることが、前記ウェブページについて前記ＣＳＳファイルのオリジナルのスタイルと同じスタイルを生じさせると判断するステップと、
圧縮済みＣＳＳファイルを得るために、前記ＣＳＳファイルの前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージするステップと、
前記ウェブページの要求を受信することに応じて、前記ウェブページおよび前記圧縮済みＣＳＳファイルを含むウェブレスポンスを生成するステップと、
を含む、方法。
【請求項２】
前記マージされた繰り返されるコードの長さに基づいて、前記圧縮済みＣＳＳファイルが有効であるかどうかを判断するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第３のセレクタが前記プロパティを含むことに応じて、前記方法はさらに、
前記繰り返されるコードが、
前記第１、第２および第３のセレクタの同じ値
前記第１、第２および第３のセレクタの異なる優先順位
のうちの１つまたは複数を有するかどうかを判断するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記繰り返されるコードのプロパティの後値は前記プロパティの前値を上書きし、前記後値は等しいまたはより高い優先順位を有する、あるいは、
前記プロパティの前値は前記プロパティの後値を上書きし、前記前値はより高い優先順位を有する
と判断することに応答して、前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージすることが、前記ウェブページについて前記ＣＳＳファイルのオリジナルのスタイルと同じスタイルをつくると判断するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記繰り返されるコードをマージするステップが、プロパティの第２の値を除去するステップを含み、前記第２の値が、第１の値の前に現れるか、前記第１の値より低い優先順位を有するか、または、前記第１の値との上書き関係を有する、請求項１に記載の方法。
【請求項６】
前記ＣＳＳファイルのセレクタおよび対応するプロパティをテーブルで表すステップと、
前記テーブルにおいてそれぞれのプロパティに対する共通エリアを決定するステップとをさらに含む、請求項１に記載の方法。
【請求項７】
前記テーブルにおいてプロパティに対する現在の最大共通エリアを識別するステップと、 
共通因子として前記プロパティを抽出するステップと、
前記プロパティを含むそれぞれのセレクタにわたって前記共通因子をマージするステップと
をさらに含む、請求項６に記載の方法。
【請求項８】
複数の、マージされた繰り返されるコードに基づいて、前記圧縮済みＣＳＳファイルを生成するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記圧縮済みＣＳＳファイルを生成する前に、前記ＣＳＳファイルのすべてのセレクタのプロパティをアルファベット順に組織化するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
プロセッサによって実行されると、ダイナミックロードベースのマージを容易にするための方法を前記プロセッサに実行させる命令を格納する非一時的な記憶媒体であって、前記方法が、
前記ＣＳＳファイルに関連づけられたウェブページをホストするサーバにより、前記ＣＳＳファイルの第１のセレクタおよび第２のセレクタの繰り返されるコードを識別することによって、前記第１のセレクタおよび前記第２のセレクタを識別するステップであって、前記繰り返されるコードは前記第１のセレクタおよび前記第２のセレクタのそれぞれに現れる、ステップと、
前記第１のセレクタおよび前記第２のセレクタが前記ＣＳＳファイルにおいて隣接しているかどうかを判断するステップと、
前記第１のセレクタおよび前記第２のセレクタが隣接していないことに応じて、前記第１のセレクタと前記第２のセレクタとの間の第３のセレクタが前記第１のセレクタおよび前記第２のセレクタに含まれるプロパティを含むかどうかを判断するステップと、
前記第３のセレクタが前記プロパティを含まないことに応じて、前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージすることが、前記ウェブページについて前記ＣＳＳファイルのオリジナルのスタイルと同じスタイルを生じさせると判断するステップと、
圧縮済みＣＳＳファイルを得るために、前記ＣＳＳファイルの前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージするステップと、
前記ウェブページの要求を受信することに応じて、前記ウェブページおよび前記圧縮済みＣＳＳファイルを含むウェブレスポンスを生成するステップと、
を含む、非一時的な記憶媒体。
【請求項１１】
前記方法が、前記マージされた繰り返されるコードの長さに基づいて、前記圧縮済みＣＳＳファイルが有効であるかどうかを判断するステップをさらに含む、請求項１０に記載の非一時的な記憶媒体。
【請求項１２】
前記第３のセレクタが前記プロパティを含むことに応じて、前記方法はさらに、
前記繰り返されるコードが、
前記第１、第２および第３のセレクタの同じ値
前記第１、第２および第３のセレクタの異なる優先順位
のうちの１つまたは複数を有するかどうかを判断するステップをさらに含む、請求項１０に記載の非一時的な記憶媒体。
【請求項１３】
前記方法が、
前記繰り返されるコードのプロパティの後値は前記プロパティの前値を上書きし、前記後値は等しいまたはより高い優先順位を有する、あるいは、
前記プロパティの前値は前記プロパティの後値を上書きし、前記前値はより高い優先順位を有する
と判断することに応答して、前記第１のセレクタおよび前記第２のセレクタの前記繰り返されるコードをマージすることが、前記ウェブページについて前記ＣＳＳファイルのオリジナルのスタイルと同じスタイルをつくると判断するステップをさらに含む、請求項１０に記載の非一時的な記憶媒体。 
【請求項１４】
前記繰り返されるコードをマージするステップが、プロパティの第２の値を除去するステップを含み、前記第２の値が、第１の値の前に現れるか、前記第１の値より低い優先順位を有するか、または、前記第１の値との上書き関係を有する、請求項１０に記載の非一時的な記憶媒体。
【請求項１５】
前記方法が、
前記ＣＳＳファイルのセレクタおよび対応するプロパティをテーブルで表すステップと、
前記テーブルにおいてそれぞれのプロパティに対する共通エリアを決定するステップとをさらに含む、請求項１０に記載の非一時的な記憶媒体。
【請求項１６】
前記方法が、
前記テーブルにおいてプロパティに対する現在の最大共通エリアを識別するステップと、
共通因子として前記プロパティを抽出するステップと、
前記プロパティを含むそれぞれのセレクタにわたって前記共通因子をマージするステップと
をさらに含む、請求項１５に記載の非一時的な記憶媒体。
【請求項１７】
前記方法が、複数の、マージされた繰り返されるコードに基づいて、前記圧縮済みＣＳＳファイルを生成するステップをさらに含む、請求項１０に記載の非一時的な記憶媒体。
【請求項１８】
前記方法が、前記圧縮済みＣＳＳファイルを生成する前に、前記ＣＳＳファイルのすべてのセレクタのプロパティをアルファベット順に組織化するステップをさらに含む、請求項１０に記載の非一時的な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
分野
本出願は、コンピュータ技術の分野に関し、より具体的には、ネットワーク通信のためのデータ圧縮の方法およびシステムに関する。
【背景技術】
【０００２】
関連技術
コンピュータおよびネットワーク技術の進歩と共に、異なるアプリケーションからユーザによって実行される様々な動作は、ウェブサービスへの広範囲に及ぶアクセスをもたらす。例えば、複数のユーザが、異なるプラットフォーム上で実行しているモバイルアプリケーションや、異なるオペレーティングシステムの異なるブラウザ上で実行しているウェブインタフェースなどの異なるアプリケーションを介して、電子商取引ウェブサイト上で同時に買い物をする場合がある。ウェブサービスをホストするサーバは、異なるユーザに対応する買い物用のウェブページを提示し、それにより、電子商取引サービスを促進する。
【０００３】
しかし、異なるアプリケーションによるシステムへの同時アクセスは、ユーザ活動数を増加させ、その結果、サーバからのウェブページへのアクセス量が増大する。大多数のこれらのウェブページは、カスケーディングスタイルシート（ＣＳＳ）を使用して表すことができる。ＣＳＳファイルは、クライアントデバイスのブラウザのウェブページに対する提示スタイルを提供するために、通常、ウェブページと共にネットワーク上で送信される。ＣＳＳファイルは、通常、テキストフォーマットである。ＣＳＳファイルが圧縮されれば、ＣＳＳファイルのサイズはより小さくなる。その結果、圧縮済みＣＳＳファイルは、ネットワーク上でより効率的に送信することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＳＳファイル圧縮に対して多くの方法が利用可能であるが、依然として、ＣＳＳファイルの広範囲に及ぶ圧縮における問題がいくつか残っている。
【課題を解決するための手段】
【０００５】
概要
本発明の一実施形態は、カスケーディングスタイルシート（ＣＳＳ）ファイルの圧縮を容易にするためのシステムを提供する。動作の間、システムは、ＣＳＳファイルをローカル記憶装置に格納し、ＣＳＳファイルのマージパラメータを識別する。マージパラメータは、繰り返されるセレクタ、セレクタの繰り返されるプロパティ、および異なるセレクタのプロパティの同じ値のうちの１つであり得る。次いで、システムは、マージパラメータに対してマージ条件が満たされているかどうかを判断し、圧縮済みマージパラメータを得るために、ＣＳＳファイルのマージパラメータをマージする。マージ条件は、マージパラメータのマージがＣＳＳファイルのオリジナルのスタイルと一致しているかどうかを示す。
【０００６】
この実施形態の変形形態では、システムは、圧縮済みマージパラメータの長さに基づいて、圧縮済みマージパラメータが有効であるかどうかを判断する。
【０００７】
この実施形態の変形形態では、システムは、第１のセレクタと第２のセレクタが隣接しているかどうかを判断することによって、マージ条件が満たされているかどうかを判断する。第１のセレクタと第２のセレクタが隣接していない場合は、システムは、第１のセレクタと第２のセレクタとの間の第３のセレクタが第１および第２のセレクタに含まれるプロパティを含むかどうかを判断する。
【０００８】
さらなる変形形態では、システムは、プロパティが次の、すなわち、（ｉ）第１、第２および第３のセレクタの同じ値、ならびに、（ｉｉ）第１、第２および第３のセレクタの異なる優先順位のうちの１つまたは複数を有するかどうかを判断することによって、マージ条件が満たされているかどうかをさらに判断する。
【０００９】
この実施形態の変形形態では、システムは、（ｉ）マージパラメータのプロパティの後値はプロパティの前値を上書きし、後値は等しいまたはより高い優先順位を有する、あるいは、（ｉｉ）プロパティの前値はプロパティの後値を上書きし、前値はより高い優先順位を有すると判断することによって、マージ条件が満たされているかどうかを判断する。
【００１０】
この実施形態の変形形態では、システムは、セレクタのプロパティの第２の値を除去することによって、マージパラメータをマージする。第２の値は、（ｉ）第１の値の前に現れること、（ｉｉ）第１の値より低い優先順位を有すること、または、（ｉｉｉ）第１の値との上書き関係を有することができる。
【００１１】
この実施形態の変形形態では、システムは、ＣＳＳファイルのセレクタおよび対応するプロパティをテーブルで表し、テーブルにおいてそれぞれのプロパティに対する共通エリアを決定する。
【００１２】
さらなる変形形態では、システムは、テーブルにおいてプロパティに対する現在の最大共通エリアを識別し、共通因子として当該プロパティを抽出し、当該プロパティを含むそれぞれのセレクタにわたって共通因子をマージする。
【００１３】
この実施形態の変形形態では、システムは、複数の圧縮済みマージパラメータに基づいて、圧縮済みＣＳＳファイルを生成する。
【００１４】
この実施形態の変形形態では、システムは、圧縮に備えて、ＣＳＳファイルのすべてのセレクタのプロパティをアルファベット順に組織化することによって、ＣＳＳファイルを準備する。
【００１５】
図面の簡単な説明
本明細書に組み込まれ、本明細書の一部を構成する本明細書の添付の図面は、本出願のいくつかの例示的な実施形態を示し、説明と共に、本出願を示す上で役立つものであり、本出願を制限するものではないと解釈する。
【図面の簡単な説明】
【００１６】
【図１Ａ】本出願の実施形態による、ネットワーク全域での例示的な圧縮済みＣＳＳファイル送信を示す。
【図１Ｂ】本出願の実施形態による、例示的なＣＳＳファイル圧縮強化プロセスを示す。
【図２Ａ】本出願の実施形態による、データ圧縮システムのＣＳＳファイル圧縮強化プロセスを示すフローチャートを提示する。
【図２Ｂ】本出願の実施形態による、ＣＳＳファイル圧縮強化のためのデータ圧縮システムの検証プロセスを示すフローチャートを提示する。
【図２Ｃ】本出願の実施形態による、ＣＳＳファイル圧縮強化のためのデータ圧縮システムの上書き検証プロセスを示すフローチャートを提示する。
【図３Ａ】本出願の実施形態による、ＣＳＳファイル圧縮強化のための共通因子の例示的なグラフ選択を示す。
【図３Ｂ】本出願の実施形態による、共通因子に基づくデータ圧縮システムのＣＳＳファイル圧縮強化プロセスを示すフローチャートを提示する。
【図４】本出願の実施形態による、例示的なデータ圧縮システムの概略構造図である。
【発明を実施するための形態】
【００１７】
図中、同様の参照番号は、同じ図要素を指す。
【００１８】
詳細な説明
本発明の実施形態は、圧縮完全性を保証しながら、ＣＳＳファイルの繰り返されるセレクタ、繰り返されるプロパティおよび値をマージすることによって、ＣＳＳファイルを効率的に圧縮する問題を解決する。この方法では、ＣＳＳファイルの圧縮強化により、サイズはより小さくなり、より小さくなったサイズは、ネットワーク上で好都合に送信される。
【００１９】
既存の技術では、ＣＳＳファイルの圧縮は、ファイルのサイズを低減するために、ＣＳＳファイルのマージン、注釈および繰り返される文字を除去する。その上、いくつかのコンプレッサは、無効な文字を除去することもできる。しかし、そのような圧縮は、ＣＳＳファイルのセレクタ内でおよびＣＳＳファイルのセレクタにわたって、冗長性をそれほど低減しない。特に、ＣＳＳファイルの前処理は、直接圧縮することができない大量の冗長ＣＳＳコードを生成し得る。ネットワーク全域でのそのようなＣＳＳファイルの送信は、非効率的となる。
【００２０】
この問題を解決するため、本発明の実施形態は、ＣＳＳファイルの圧縮強化を容易にするためのシステムを提供する。システムは、繰り返されるセレクタ（例えば、同じセレクタの多重宣言）をマージし、同じセレクタの繰り返されるプロパティを除去することによって、ＣＳＳファイルを圧縮する。次いで、システムは、同じセレクタの上書きスタイルの記載（例えば、プロパティの上書き値）を除去し、同じプロパティを含むセレクタを統合する。システムは、さらに、共通因子を抽出してマージする。これらの５つのステップは、以前のステップに基づいてそれぞれのステップを実行すべきであるため、順次的なものであり得ることに留意すべきである。
【００２１】
図１Ａは、本出願の実施形態による、ネットワーク全域での例示的な圧縮済みＣＳＳファイル送信を示す。この例では、ＣＳＳファイル圧縮のためのデータ圧縮システム１０２は、サーバ１１２でのＣＳＳファイル１２２の圧縮強化のために、サーバ１１２に配備される。サーバ１１２は、ＣＳＳファイルをローカル記憶装置に格納することができる。ＣＳＳファイル１２２は、クライアントデバイス１１４のブラウザのウェブページ１３０に対する提示スタイルを提供するために、ウェブページ１３０と共に、ネットワーク１５０（例えば、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット）上で送信されると仮定する。提示スタイルは、ブラウザにおいてウェブページ１３０がどのようにユーザ１０１に提示されるかを決定する。
【００２２】
既存の技術では、圧縮技法は、ネットワーク１５０上での送信前にＣＳＳファイル１２２に適用される。通常、ＣＳＳファイル１２２の圧縮は、ＣＳＳファイル１２２のマージン、注釈、繰り返されるおよび無効な文字の除去を含む。しかし、そのような圧縮は、ＣＳＳファイル１２２のセレクタ内でおよびＣＳＳファイル１２２のセレクタにわたって、冗長性をそれほど低減しない。従って、ネットワーク１５０全域でのＣＳＳファイル１２２の送信は、非効率的となる。この問題を解決するため、システム１０２は、ＣＳＳファイル１２２を圧縮して、圧縮済みＣＳＳファイル１２４を生成する。いくつかの実施形態では、システム１０２は、圧縮に備えて、すべてのセレクタのプロパティをアルファベット順に組織化することによって、ＣＳＳファイルを準備する。また、サーバ１１２は、圧縮済みＣＳＳファイル１２４をローカル記憶装置に格納する。クライアントデバイス１１４がウェブページ１３０を要求する際は常に、サーバ１１２は、ネットワーク１５０上でクライアントデバイス１１４に圧縮済みＣＳＳファイル１２４を送信する。
【００２３】
図１Ｂは、本出願の実施形態による、例示的なＣＳＳファイル圧縮強化プロセスを示す。システム１０２は、多くのステップに基づいて圧縮済みＣＳＳファイル１２４を生成する。強化された圧縮プロセスの間、システム１０２は、繰り返されるセレクタをマージする（動作Ｓ１５２）。例えば、.a{margin:0}.a{padding:0}のセレクタは同じである。従って、それらのセレクタは、.a{margin:0;padding:0}としてマージすることができる。また、システム１０２は、同じセレクタの同じプロパティの繰り返される値の割り当てを除去する（動作Ｓ１５４）。プロパティ「margin」の値が.a{margin:0;margin:1px}で繰り返されているため、システム１０２は、そのプロパティ「margin」を.a{margin:1px}として圧縮する。次いで、システム１０２は、同じセレクタ内の同じプロパティの上書き値の割り当て（例えば、プロパティの上書き値）を除去する（動作Ｓ１５６）。例えば、「background」は「background-color」も含むため、.a{background-color:#FFF; background:#000 url(xxx.jpg)}は、.a{background:#000 url(xxx.jpg)}として圧縮することができる。
【００２４】
システム１０２は、同じプロパティの同じ値の割り当てを含むセレクタを統合する（動作Ｓ１５８）。プロパティ「margin」および「color」は、.a{margin:0;color:#000} .b{margin:0;color:#000}において同じ値を有する。従って、セレクタ.aおよび.bは、.a,.b{margin;0;color:#000}としてマージすることができる。システム１０２は、さらに、ＣＳＳファイル１２２の共通因子を抽出してマージする（動作Ｓ１６０）。例えば、システム１０２は、.a{margin:0;padding:0} .b{margin:0;padding:1}から共通因子「margin」を抽出し、それらを.a,.b{margin:0}.a{padding:0}.b{padding:1}としてマージすることができる。このように、システム１０２は、圧縮済みＣＳＳファイル１２４を生成する。
【００２５】
図２Ａは、本出願の実施形態による、データ圧縮システムの強化されたＣＳＳファイル圧縮プロセスを示すフローチャートを提示する。動作の間、システムは、ＣＳＳファイルの候補マージパラメータを識別する（動作Ｓ２０１）。ＣＳＳファイルは、圧縮されていないオリジナルのいかなるＣＳＳファイルでもあり得る。また、ＣＳＳファイルは、従来の圧縮方法を使用して圧縮されている圧縮済みＣＳＳファイルでもあり得る（例えば、マージン、注釈文字、無効なおよび繰り返される文字は除去されている可能性がある）。動作Ｓ２０１では、システムは、ＣＳＳファイルでマージできるパラメータを決定する。パラメータは、ＣＳＳファイルにおいて繰り返し存在している要素である。
【００２６】
パラメータは、繰り返されるセレクタ、セレクタの繰り返されるプロパティ、または異なるセレクタのプロパティの同じ値であり得る。例えば、.a{margin:0}.b{padding:0}.a{padding:0}は、繰り返されるセレクタ.aを含む。従って、セレクタ.aは、候補マージパラメータとして識別することができる。他方では、.a{margin:0;margin:1px}は、繰り返されるプロパティ「margin」をセレクタ.aに含む。その上、.a{margin:0;padding:0}.b{margin:0;padding:1}は、プロパティ「margin」の同じ値をセレクタ.aおよび.bに含む。同様に、.a{margin:0;padding:0;color:#FFF;padding:1}.b{margin:0;padding:1}.a{margin:0;padding:1;color:#FFF}は、同じプロパティ「padding」を含む同じセレクタ.aを含み、セレクタ.aおよび.bは、プロパティ「margin」および「padding」の同じ値0および1をそれぞれ含む。
【００２７】
次いで、システムは、マージ条件が満たされているかどうかをチェックする（動作Ｓ２０２）。マージ条件は、マージパラメータのマージがオリジナルのＣＳＳファイルのオリジナルのスタイル（すなわち、プロパティのオリジナルの値）と一致しているかどうかを判断するために使用される。一致している場合は、マージ条件は満たされている。マージ条件が満たされている場合は、システムは、ＣＳＳファイルの識別されたマージパラメータをマージし（動作Ｓ２０３）、すべてのパラメータを調べたかどうかをチェックする（動作Ｓ２０４）。マージ条件が満たされていない場合もまた、システムは、すべてのパラメータを調べたかどうかをチェックする（動作Ｓ２０４）。すべてのパラメータを調べたわけではない場合は、システムは、ＣＳＳファイルの候補マージパラメータを識別する（動作Ｓ２０１）ことを続行する。いくつかの実施形態では、システムは、マージされたセレクタの長さが長くなったか否かもチェックすることができる。マージされたセレクタの長さが長くなった場合は、システムは、マージャを処分することができる。例えば、セレクタが.aaaaaaaaa{margin:0;padding:0}.bbbbbbbbbb{margin:0;padding:1}においてマージされる場合は、得られるセレクタは、より長い名称.aaaaaaaaa,.bbbbbbbbbb{margin:0}.aaaaaaaaa{padding:0}.bbbbbbbbbb{padding:1}を有する。長さが長くなったため、システムは、マージャを処分する。
【００２８】
すべてのパラメータを調べた場合は、システムは、マージされたパラメータに基づいて圧縮済みＣＳＳファイルを得る（動作Ｓ２０５）。次いで、システムは、圧縮済みＣＳＳファイルがオリジナルのＣＳＳファイルより低減されたファイル長さを有するかどうかをチェックする（動作Ｓ２０６）。圧縮済みＣＳＳファイルが低減されたファイル長さを有する場合は、システムは、圧縮済みＣＳＳファイルを使用する（動作Ｓ２０７）。そうでなければ、システムは、圧縮済みＣＳＳファイルを処分し、オリジナルのＣＳＳファイルを使用する（動作Ｓ２０８）。それぞれのマージ動作の後にシステムが長さをチェックする場合、圧縮済みＣＳＳファイルは、より大きなファイルサイズを有さない可能性があることに留意すべきである。
【００２９】
図２Ｂは、本出願の実施形態による、ＣＳＳファイル圧縮強化のためのデータ圧縮システムの検証プロセスを示すフローチャートを提示する。検証プロセスは、候補マージパラメータに対するマージ条件が満たされているかどうかを判断する。システムは、２つのセレクタＡおよびＢが互いに隣接しているかどうかを判断する（動作Ｓ２２１）。例えば、.a{margin:0}.a{padding:0}において、２つのセレクタは互いに隣接している。他方では、.a{margin:0}.b{padding:1px}.a{padding:0}において、セレクタ.aは互いに隣接していない。
【００３０】
ＡとＢが隣接していない（動作Ｓ２２２）場合は、システムは、中間セレクタＣがセレクタＡおよびＢと同じプロパティを含むかどうかを判断する（動作Ｓ２２３）。中間セレクタＣに含まれるプロパティが、セレクタＡおよびＢのプロパティと異なる場合は、セレクタＡおよびＢのマージは、セレクタＣのプロパティに影響を及ぼすことはなく、マージ条件は満たされている。セレクタＣが、セレクタＡには含まれるがセレクタＢには含まれないプロパティを含む場合は、セレクタＢをセレクタＡとマージしても、中間セレクタＣには影響が及ばない。同様に、セレクタＣが、セレクタＢには含まれるがセレクタＡには含まれないプロパティを含む場合は、セレクタＡをセレクタＢとマージしても、中間セレクタＣには影響が及ばない。これらの２つの状況下では、マージ条件は満たされている。
【００３１】
セレクタが同じプロパティを有する（動作Ｓ２２４）場合は、システムは、セレクタＡ、ＢおよびＣのプロパティが同じ値を有するかどうかをチェックする（動作Ｓ２２５）。プロパティが同じ値を有さない（動作Ｓ２２６）場合は、システムは、プロパティがセレクタＣにおいてセレクタＡおよびＢとは異なる優先順位を有するかどうかをチェックする（動作Ｓ２２７）。プロパティが異なる優先順位を有さない（動作Ｓ２２８）場合は、システムは、マージ条件が満たされていないと判断する（動作Ｓ２３０）。セレクタＡとＢが隣接している（動作Ｓ２２２）場合、セレクタＣがセレクタＡおよびＢとは同じプロパティを有さない（動作Ｓ２２４）場合、セレクタＡ、ＢおよびＣのプロパティが同じ値を有する（動作Ｓ２２６）場合、または、セレクタＣのプロパティが異なる優先順位を有する（動作Ｓ２２８）場合は、システムは、マージ条件が満たされていると判断する（動作Ｓ２３０）。
【００３２】
例えば、.a{margin:0;padding:1}.b{padding:1px}.a{padding:0}において、それぞれのセレクタは、プロパティ「padding」を含むが、値は異なる。従って、システムは、マージ条件が満たされていないと判断する。他方では、.a{margin:0;padding:1 }.b{padding:1px !important}.a{padding:0}、.a{margin:0;padding:1 }.b{padding:1px }.a{padding:0 !important}または.a{margin:0;padding:1 !important}.b{padding:1px }.a{padding:0}において、中間セレクタのプロパティ「padding」は異なる優先順位を有する。従って、システムは、マージ条件が満たされていると判断する。
【００３３】
ＣＳＳファイル１２２では、同じプロパティの値が同じ優先順位を有する場合は、圧縮済みＣＳＳファイルを得るために、後値は、前値を上書きする。プロパティの値が異なる優先順位を有する場合は、圧縮済みＣＳＳファイルを得るために、より高い優先順位を有する値は、より低い優先順位を有する値を上書きする。図２Ｃは、本出願の実施形態による、ＣＳＳファイル圧縮強化のためのデータ圧縮システムの上書き検証プロセスを示すフローチャートを提示する。動作の間、システムは、同じセレクタ内で異なる値を有するプロパティを識別する（動作Ｓ２４１）。
【００３４】
次いで、システムは、後値が前値を上書きするかどうかをチェックする（動作Ｓ２４２）。後値が前値を上書きする場合は、システムは、後値の方が高い優先順位を有するかどうかをチェックする（動作Ｓ２４３）。そうでなければ、システムは、前値の方が高い優先順位を有するかどうかをチェックする（動作Ｓ２４４）。後値が、前値を上書きし、より高い優先順位を有する場合は、システムは、マージ条件が満たされていると判断する（動作Ｓ２４６）。同様に、前値が、後値を上書きし、より高い優先順位を有する場合は、システムは、マージ条件が満たされていると判断する（動作Ｓ２４６）。そうでなければ、システムは、マージ条件が満たされていないと判断する（動作Ｓ２４５）。
【００３５】
同じセレクタのプロパティ間で上書き関係がない場合は、マージ条件は満たされていることに留意すべきである。そうでなければ、プロパティの値が同じ優先順位を有する場合は、後値は前値を直接上書きすることができる。例えば、.a{margin:0;margin:1px}は、.a{margin:1px}として直接マージすることができる。ここでは、.a{margin:1px}は、圧縮済みマージパラメータと見なすことができる。同じプロパティの値が異なる優先順位を有する場合は、より高い優先順位を有する値は、より低い優先順位を有する値を上書きする。例えば、.a{margin:0 !important;margin:1px}は、.a{margin:0 !important}としてマージすることができるか、または、.a{margin:0;margin:1px !important }は、.a{ margin:1px !important}としてマージすることができる。
【００３６】
後値が前値を上書きし、後値が前値と同じまたはより高い優先順位を有する場合は、マージ条件は満たされている。この事例では、後値が、マージのために前値を上書きする。例えば、.a{background-color:#FFF;background:#000 url(xxx.jpg)}は、.a{background:#000 url(xxx.jpg)}としてマージされる。他方では、前値が後値を上書きし、前値が後値より高い優先順位を有する場合は、マージ条件は満たされている。この事例では、より高い優先順位を有する前値が後値を上書きする。例えば、.a{ background:#000 url(xxx.jpg) !important; background-color:#FFF }は、.a{ background:#000 url(xxx.jpg) !important }としてマージされる。
【００３７】
いくつかのシナリオでは、マージ決定は複雑であり得る。例えば、.a{margin:0;padding:0;color:#FFF}.b{margin:0;padding:1;color:#FFF}.c{margin:0;padding:1;color:#000}において、３つのセレクタの各々は、同じ値および異なる値を有する同じプロパティを有する。すべての可能性を注意深く検討し、すべての結果を計算してそれぞれの長さを比較すれば、最も短いマージされたセレクタを選択することができる。しかし、ｎ個のセレクタおよびｍ個のプロパティがあれば、ｎ！ｍ！の可能性がある。そのような広範囲に及ぶ演算は、実際には、実現可能ではない場合がある。この問題を解決するため、本発明の実施形態は、共通因子の選択のためのグラフ選択アルゴリズムを提供する。
【００３８】
図３Ａは、本出願の実施形態による、ＣＳＳファイル圧縮強化のための共通因子の例示的なグラフ選択を示す。ｎ個のセレクタ３０２、３０４および３０６（例えば、セレクタ.a、.b、.cのそれぞれ）ならびにｍ個のプロパティ３１２、３１４および３１６（例えば、プロパティ「margin」、「padding」、「color」のそれぞれ）があると仮定する。グラフ選択アルゴリズムは、ｎ個の行とｍ個の列を有する二次元テーブル３００を生成する。動作の間、システムは、最初に、マージを最大化するプロパティを選択する。言い換えれば、システムは、共通エリア（例えば、プロパティに対する同じ値を有するグリッドの数）を最大化するプロパティを選択する。
【００３９】
テーブル３００では、プロパティ３１２の値は、それぞれのセレクタに対して同じである。従って、プロパティ３１２に対してマージできるグリッドの数は３である。従って、システムは、プロパティ３１２に対する共通エリアを３と決定する。同じように、システムは、プロパティ３１４および３１６に対する共通エリアを２および２のそれぞれに決定する。テーブル３００を使用するグラフ選択プロセスの間、システムは、最初に、共通エリアが３である列を選択し、対応する共通因子（すなわち、対応するプロパティ）を抽出する。システムは、それぞれのセレクタに対する共通因子をマージする。図３Ａの例では、共通因子「margin」の抽出およびマージにより、.a,.b,.c{margin:0}が得られる。
【００４０】
次いで、システムは、共通エリアが２である列を選択してマージする。２つの列が同じ共通エリアを有するため、マージのためにどちらを選択してもよい（例えば、ランダム選択）。テーブル３００の一連のグリッドがマージされた時点で、それらのグリッドは、さらなる計算において除外される。図２Ｂと併せて説明されるように、グリッドのマージャは検証を必要とすることに留意すべきである。マージャの後、共通因子の長さが低減されていない場合は、共通因子に対する抽出は実行されない。図３Ａの例では、グラフ選択アルゴリズムを使用する共通因子の抽出およびマージにより、a,.b,.c{margin:0}.a,.b{color:#FFF}.a{padding:0}.b,.c{padding:1}.c{color:#000}が得られる。ここでは、長さは、２１文字低減される。
【００４１】
図３Ｂは、本出願の実施形態による、共通因子に基づくデータ圧縮システムの強化されたＣＳＳファイル圧縮プロセスを示すフローチャートを提示する。動作の間、システムは、図３Ａと併せて説明されるように、グラフ表現（例えば、テーブル）からＣＳＳファイルの各プロパティに対する共通エリアを計算する（動作Ｓ３５１）。システムは、最大共通エリアを有する、マージされていないプロパティを識別する（動作Ｓ３５２）。次いで、システムは、マージ条件が満たされているかどうかをチェックする（動作Ｓ３５３）。マージ条件は、マージパラメータのマージがオリジナルのスタイルと一致しているかどうかを判断するために使用される。それらが一致している場合は、マージ条件は満たされている。いくつかの実施形態では、マージ条件は、マージ時の長さの低減も含み得る。
【００４２】
マージ条件が満たされている場合は、システムは、ＣＳＳファイルの識別されたプロパティをマージし（動作Ｓ３５４）、グラフ表現のすべてのプロパティを調べたかどうかをチェックする（動作Ｓ３５５）。マージ条件が満たされていない場合は、システムは、すべてのプロパティを調べたかどうかをチェックする（動作Ｓ３５５）。すべてのパラメータを調べたわけではない場合は、システムは、最大共通エリアを有する次のプロパティに進む（動作Ｓ３５２）。すべてのパラメータを調べた場合は、システムは、マージされたプロパティに基づいて圧縮済みＣＳＳファイルを得る（動作Ｓ３５６）。次いで、システムは、圧縮済みＣＳＳファイルがオリジナルのＣＳＳファイルより低減されたファイル長さを有するかどうかをチェックする（動作Ｓ３５７）。圧縮済みＣＳＳファイルが低減されたファイル長さを有する場合は、システムは、圧縮済みＣＳＳファイルを使用する（動作Ｓ３５８）。そうでなければ、システムは、圧縮済みＣＳＳファイルを処分し、オリジナルのＣＳＳファイルを使用する（動作Ｓ３５９）。
【００４３】
図４は、本出願の実施形態による、例示的なデータ圧縮システムの概略構造図である。データ圧縮システム４００は、ＣＳＳファイルを圧縮するために使用することができる。システム４００は、プロセッサ４１０、メモリ４２０および記憶装置４３０を含む。記憶装置４３０は、通常、命令を格納し、命令は、上記で説明される方法を実行するために、メモリ４２０にロードし、プロセッサ４１０によって実行することができる。一実施形態では、記憶装置４３０内の命令は、パラメータ識別モジュール４３２、評価モジュール４３４、マージモジュール４３６およびグラフ選択モジュール４３８を実装することができ、それらはすべて、様々な手段を通じて互いに連通することができる。
【００４４】
いくつかの実施形態では、モジュール４３２、４３４、４３６および４３８は、ハードウェアにおいて部分的にまたは全体的に実装することができ、プロセッサ４１０の一部であり得る。さらに、いくつかの実施形態では、システムは、別々のプロセッサおよびメモリを含まない場合がある。代わりに、それらの特定のタスクを実行することに加えて、モジュール４３２、４３４、４３６および４３８は、別々にまたは共同で、特殊用途演算エンジンの一部であり得る。
【００４５】
記憶装置４３０は、プロセッサ４１０によって実行されるプログラムを格納する。具体的には、記憶装置４３０は、ＣＳＳファイルの強化された圧縮のためのシステム（アプリケーション）を実装するプログラムを格納する。動作の間、アプリケーションプログラムは、記憶装置４３０からメモリ４２０にロードし、プロセッサ４１０によって実行することができる。その結果、システム４００は、上記で説明される機能を実行することができる。システム４００は、さらに、任意選択のディスプレイ４８０、キーボード４６０およびポインティングデバイス４７０と結合することができ、１つまたは複数のネットワークインタフェースを介してネットワーク４８２と結合することができる。
【００４６】
動作の間、プロパティ識別モジュール４３２は、図２Ａと併せて説明されるように、ＣＳＳファイルのマージパラメータを決定する。マージパラメータは、セレクタ、プロパティ、および異なるプロパティに割り当てられた値を含み得る。評価モジュール４３４は、決定されたマージパラメータがマージ条件を満たしているかどうかを判断する。マージモジュール４３６は、圧縮済みＣＳＳファイルを得るために、ＣＳＳファイルのマージパラメータをマージする。いくつかの実施形態では、グラフ選択モジュール４３８は、図３Ｂと併せて説明されるように、グラフ表現で（例えば、テーブルで）ＣＳＳファイルのプロパティを表し、グラフ表現に基づいて、ＣＳＳファイルの共通因子を抽出してマージする。
【００４７】
この詳細な説明で説明されるデータ構造およびコンピュータ命令は、通常、コンピュータ可読記憶媒体上に格納され、コンピュータ可読記憶媒体は、コンピュータシステムによる使用のためにコードおよび／またはデータを格納できるいかなるデバイスまたは媒体でもあり得る。コンピュータ可読記憶媒体は、これらに限定されないが、揮発性メモリ、不揮発性メモリ、磁気および光学記憶装置（ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）など）、または、現在知られているかもしくは後に開発されるコンピュータ可読媒体の格納が可能な他の媒体を含む。
【００４８】
詳細な説明の項目で説明される方法およびプロセスは、コードおよび／またはデータとして具体化することができ、コードおよび／またはデータは、上記で説明されるように、コンピュータ可読記憶媒体に格納することができる。コンピュータシステムがコンピュータ可読記憶媒体上に格納されたコードおよび／またはデータを読み取って実行する際は、コンピュータシステムは、データ構造およびコードとして具体化されてコンピュータ可読記憶媒体内に格納された方法およびプロセスを実行する。
【００４９】
その上、本明細書で説明される方法およびプロセスは、ハードウェアモジュールまたは装置に含めることができる。これらのモジュールまたは装置は、これらに限定されないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時間に特定のソフトウェアモジュールもしくはコード片を実行する専用もしくは共有プロセッサ、および／または、現在知られているかもしくは後に開発される他のプログラム可能論理デバイスを含み得る。ハードウェアモジュールまたは装置が起動されると、ハードウェアモジュールまたは装置は、それらの中に含まれる方法およびプロセスを実行する。
【００５０】
上記の説明は、当業者が実施形態を作成して使用できるように提示され、特定の応用およびその要件の文脈において提供される。開示される実施形態の様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、本開示の精神および範囲から逸脱することなく、他の実施形態および応用に適用することができる。従って、本発明は、示される実施形態に限定されないが、本明細書で開示される原理および特徴と一致する最も広い範囲に添うものとする。
【図１Ａ】
0006373489.tif 000002
【図１Ｂ】
0006373489.tif 000003
【図２Ａ】
0006373489.tif 000004
【図２Ｂ】
0006373489.tif 000005
【図２Ｃ】
0006373489.tif 000006
【図３Ａ】
0006373489.tif 000007
【図３Ｂ】
0006373489.tif 000008
【図４】
0006373489.tif 000009