JP3916219B2 - リンク先圧縮システム - Google Patents
リンク先圧縮システム Download PDFInfo
- Publication number
- JP3916219B2 JP3916219B2 JP2002090055A JP2002090055A JP3916219B2 JP 3916219 B2 JP3916219 B2 JP 3916219B2 JP 2002090055 A JP2002090055 A JP 2002090055A JP 2002090055 A JP2002090055 A JP 2002090055A JP 3916219 B2 JP3916219 B2 JP 3916219B2
- Authority
- JP
- Japan
- Prior art keywords
- url
- compressed
- client
- variable
- mapping information
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Description
【発明の属する技術分野】
本発明は、コンテンツ配信システムのサーバとクライアントの間にプロキシサーバを設置し、該プロキシサーバを経由して通信されるURLを圧縮するリンク先圧縮システムに関する。
【0002】
【従来の技術】
クライアントとして携帯電話を利用した場合、ハードウェアの制約により、一つのコンテンツ要求で処理できるURLの文字列長が制限されている。そのため、制限を超えたURLを扱うことができない。しかし、携帯電話は、コンテンツ変換サーバを介して、PC向けに作成されたサーバをアクセスすることがある。この場合、PC向けに作成されたサーバでは、携帯電話の制限を超えるURLを記述するコンテンツが作成されることもある。
【0003】
また、携帯電話の通信では、多くの場合、従量課金方式が採用されているため、通信量を減らすことは通信料金を抑えることに役立つ。そのため、サーバとクライアントの間で通信されるURLの圧縮が行われる。以下に、URL圧縮の従来の技術を示す。まず、プロキシサーバは、サーバから送られるコンテンツ内部の接続先URLを圧縮したURL(圧縮URL)に変換して、クライアントに転送する。このとき、プロキシサーバは、接続先URLと圧縮URLのマッピング情報(対応情報)を記録する。プロキシサーバがクライアントからの圧縮URLを受信したとき、前記マッピング情報から圧縮URLに対応する接続先URLを検索して、サーバに転送する。
【0004】
【発明が解決しようとする課題】
上述の従来技術では、プロキシサーバはほとんど利用されないURLに対してもマッピング情報を保持しなければいけないため、リソースを多く消費していた。さらに、割当てる圧縮URLの名前空間を無駄に消費してしまい、利用頻度の高いURLに効率的な圧縮URLを割当てることができない。
【0005】
また、上記問題の解決策として、プロキシサーバがマッピング情報を一時的に保持する方法が考えられる。しかし、この方法では、クライアントが圧縮URLを記録した後、ある程度期間を経てから前記記録した圧縮URLでアクセスした場合、プロキシサーバからマッピング情報が既に削除されているため、目的のコンテンツを得ることができない弊害が出てしまう。
【0006】
さらに、会員制サービスや商品売買などのコンテンツを提供するサーバでは、通信のセッション管理をする必要がある。しかし、携帯電話ではセッション管理にCookieを利用できないものがあるため、URLにセッション識別子を付加してセッション管理を行う方法が採られている。この場合、クライアント毎に異なるセッション識別子の付加されたURLを利用するため、そのURLを圧縮しても、別のクライアントはその圧縮URLを利用できない。
【0007】
本発明は、上記従来技術における問題点を解決し、特に利用頻度の高いURLに効率的な圧縮URLを割当て、圧縮URLの名前空間をできるだけ効率的に使用することができる圧縮システムを提供することを目的とする。
【0008】
【課題を解決するための手段】
上記目的を達成するため、請求項1に係る発明は、サーバからのコンテンツをクライアントに転送し、クライアントからのコンテンツ要求をサーバに転送するシステムに適用するリンク先圧縮システムであって、クライアントからのコンテンツ要求に含まれるURLとそのURLのアクセス回数をマッピング情報として記録する手段と、前記アクセス回数が予め設定した回数以上になったとき、そのURLの文字数よりも短い文字数の圧縮URLをマッピング情報として記録する手段と、サーバからのコンテンツに含まれるすべてのリンク先のURLを前記マッピング情報に基づいて圧縮URLに変換する手段と、クライアントからのコンテンツ要求に含まれる圧縮URLを前記マッピング情報に基づいてURLに変換する手段とを備えることを特徴とする。
【0009】
請求項2に係る発明は、サーバからのコンテンツをクライアントに転送し、クライアントからのコンテンツ要求をサーバに転送するシステムに適用するリンク先圧縮システムであって、クライアントからのコンテンツ要求に含まれるURLを、先頭要素とパラメタ要素と値要素とに分割する手段と、クライアントからのコンテンツ要求に含まれるURLを分割した各分割要素とその分割要素のアクセス回数をマッピング情報として記録する手段と、前記アクセス回数が予め設定した回数以上になったとき、その分割要素を示す文字数よりも短い文字数の圧縮ワードをマッピング情報として記録する手段と、サーバからのコンテンツに含まれるすべてのリンク先のURLのそれぞれに対して、その URL を先頭要素とパラメタ要素と値要素とに分割し、前記マッピング情報に基づいて各分割要素を圧縮ワードに変換することにより圧縮URLを取得し、前記サーバからのコンテンツ中の当該URLを前記取得した圧縮URLに書き換える手段と、クライアントからのコンテンツ要求に含まれる圧縮URLを先頭要素とパラメタ要素と値要素とに分割し、前記マッピング情報に基づいて各分割要素の圧縮ワードを元の分割要素を示す文字列に変換することにより元のURLを取得し、前記クライアントからのコンテンツ要求に含まれる圧縮URLを元のURLに書き換える手段とを備えることを特徴とする。
【0010】
請求項3に係る発明は、請求項1または2に記載のリンク先圧縮システムにおいて、前記マッピング情報として、当該URLまたは分割要素へのアクセス日付を記録する手段と、前記マッピング情報のアクセス日付が、現在日から予め設定したタイムアウト期間だけ過去に遡った日付よりも古い場合に、当該マッピング情報を削除する手段とをさらに備えることを特徴とする。
【0011】
請求項4に係る発明は、請求項3に記載のリンク先圧縮システムにおいて、前記タイムアウト期間を通常データ用と圧縮データ用の2つ用意し、前記マッピング情報のうち、圧縮URLまたは圧縮ワードが登録されているものについては前記圧縮データ用のタイムアウト期間を用いて当該マッピング情報を削除するかどうかを決定し、圧縮URLまたは圧縮ワードが登録されていないものについては前記通常データ用のタイムアウト期間を用いて当該マッピング情報を削除するかどうかを決定する手段をさらに備えることを特徴とする。
【0012】
請求項5に係る発明は、請求項1または2に記載のリンク先圧縮システムにおいて、クライアントからサーバへのコンテンツ要求に含まれるURLが、圧縮URLでなく、かつ、前記マッピング情報に当該URLに対応する圧縮URLが登録されている場合、クライアントに圧縮URLを利用する旨の通知を行う手段をさらに備えることを特徴とする。
【0013】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態を説明する。なお、同一番号は同様の部品・要素を示すものとする。これにより本発明が限定されるものではない。
【0014】
図1は、本実施の形態のシステムの利用環境を示す図である。クライアント101は、コンテンツ配信システムのクライアントとなるPCやPDA(Personal Digital Assistant)、または携帯電話などの機器である。サーバ102は、クライアント101の要求に応じて、コンテンツを配信するWebサーバである。プロキシ103は、クライアント101からのコンテンツ要求を適切なサーバに振り分けるシステムである。また、プロキシ103は、サーバ102からのコンテンツに含まれるURLを圧縮してクライアント101へ転送し、クライアント101からの圧縮したURLでのコンテンツ要求を伸張してサーバ102に転送するものである。
【0015】
クライアント101やサーバ102やプロキシ103は、公衆回線網やインターネット網や携帯電話網などで構成されるネットワーク104を介してデータ通信を行うことができる。ネットワーク104には、クライアント101やサーバ102と同様の機器やシステムが複数接続されている。
【0016】
図2は、図1のプロキシ103の構成要素を詳細に示す図である。プロキシ103は、プログラムの実行を行うCPU201と、プログラムやデータをロードするメモリ202と、他の機器と通信回線を確立する通信部203と、命令やデータの入力を行う入力部204と、クライアント101からのデータを出力する出力部205と、記憶部206が、バス215で相互に接続されて構成されている。記憶部206は、転送プログラム207、URL圧縮プログラム208、URL伸張プログラム209、ガベージコレクションプログラム210、URL変換テーブル211、パラメタ変換テーブル212、値変換テーブル213、及び閾値設定テーブル214などを記憶する。
【0017】
通信部203は、クライアント101やサーバ102などを含めネットワーク104に接続している機器との間で通信回線を確立し、データ交換を行う機能を持つ。入力部204は、キーボード、マウス、ペン入力、音声入力、ボタン、ジョグダイヤル、または十字キーなどの入力手段を持つ。出力部205は、ディスプレイ、または音声などの出力手段を持つ。
【0018】
転送プログラム207は、クライアント101からのコンテンツ要求をサーバ102へ転送し、サーバ102からのコンテンツをクライアント101に転送するプログラムである。URL圧縮プログラム208は、サーバ102からクライアント101へ転送されるコンテンツ内のURLを分割して(分割の仕方については後述する)、各分割要素の出現回数をカウントし、その出現回数に基づいて分割要素を圧縮するプログラムである。URL伸張プログラム209は、クライアント101からサーバ102へ転送されるコンテンツ要求のURLについて、それがURL圧縮プログラム208で圧縮されたものであるか否かを判断し、圧縮されている場合は伸張して通常のURLに戻すプログラムである。ガベージコレクションプログラム210は、プロキシ103で定期的に起動して、URL圧縮プログラム208やURL伸張プログラム209で不必要な情報を削除するプログラムである。
【0019】
本実施の形態のシステムでは、URL圧縮プログラム208やURL伸張プログラム209で利用する変換テーブルを3つ持っている。それぞれの変換テーブルは、圧縮するURLを、「?」と「=」と「&」に基づいて分割した各要素を扱っている。URL変換テーブル211は、分割した一番目の先頭要素で、URLの先頭から「?」の直前までの部分を扱っている。パラメタ変換テーブル212は「?」の直後から「=」の直前までのパラメタ要素を扱っている。値変換テーブル213は「=」の直後の値要素を扱っている。
【0020】
図3に、それぞれの変換テーブルの扱う要素が分割される例を示す。URLの例「http://www.hsk.co.jp/service.jsp?keyword=1&language=japanese」の中で、URLの先頭から「?」の直前までの部分「http://www.hsk.co.jp/service.jsp」が先頭要素であり、「?」や「&」の直後から「=」の直前までの「keyword」や「language」がパラメタ要素であり、「=」の直後の「1」や「Japanese」が値要素である。
【0021】
URL変換テーブル211、パラメタ変換テーブル212、及び値変換テーブル213は、同じテーブル構造を持つ。
【0022】
図4は、これらの変換テーブルの構造を示す。項番401は、変換テーブル内のレコードを一意に決定する識別子である。keyword402は、URLの分割要素を表している。図4はURL変換テーブル211を例示したものであるので、keyword402の欄にはURLの先頭要素が格納されている。パラメタ変換テーブル212ではkeyword402の欄にパラメタ要素が格納され、値変換テーブル213ではkeyword402の欄に値要素が格納されることになる。出現回数403は、keyword402がクライアント101からサーバ102への転送時に利用された回数を表している。アクセス日404は、keyword402がクライアント101からサーバ102への転送時に利用された最も新しい日付を表している。圧縮word405は、keyword402に代わってクライアント101へ転送される文字列を表している。
【0023】
閾値設定テーブル214は、URL圧縮プログラム208やURL伸張プログラム209などによる、URLの圧縮や伸張、変換テーブルのレコード削除を決定するためのパラメタが格納されている。このパラメタはシステムの管理者により予め記述されている。
【0024】
図5に、閾値設定テーブル214の構造を示す。項番501は、テーブルレコードを一意に識別することができる番号を表している。項目名502は、設定する項目を一意にする名前を表している。閾値503は、その項目に設定されている閾値を表している。各レコードの閾値503にある()内の内容は、理解を助けるために便宜上、単位を記述したものである。
【0025】
閾値設定テーブル214の項番1である「アクセス数」の閾値は、圧縮をはじめるために必要な出現回数の下限を表している。項番2である「keyword保持期間」の閾値は、変換テーブル中の圧縮wordの登録されていないレコードを削除するために必要な日数の下限を示している。この日数は、keywordの出現回数がカウントされなくなってからの期間を表している。項番3の「圧縮word保持期間」の閾値は、変換テーブル中の圧縮wordの登録されているレコードを削除するために必要な日数の下限を示している。この日数も、keywordの出現回数がカウントされなくなってからの期間を表している。
【0026】
図6は、転送プログラム207の動作手順を示す流れ図である。
【0027】
はじめに、プロキシ103は、クライアント101からのコンテンツ要求を受信する(ステップ601)。次に、コンテンツ要求のURLから接続先URLを抽出する(ステップ602)。
【0028】
図7に、コンテンツ要求のURLの例を示す。この例の接続先URL701の中で、URLの先頭からはじめの「?」までが、プロキシ103を識別するプロキシURL702である。残りの部分は、接続先URL703である。ステップ602では、この接続先URL703を抽出する。
【0029】
次に、接続先URLが抽出できたかどうかを確認する(ステップ603)。接続先URLを抽出することができたならば、ステップ604へ進む。接続先URLを抽出できなかったならば、ステップ608へ進む。ステップ604では、ステップ602で抽出した接続先URLをURL伸張プログラム209で書き換える(ステップ604)。次に、URL伸張プログラム209からの応答が1であるかどうかを調べる(ステップ605)。応答が1ならば、ステップ604で書き換えた接続先URLをURL圧縮プログラム208で書き換える(ステップ606)。さらに、ステップ606で書き換えた接続先URLへの転送先を表示するページを生成してクライアント101へ送信し(ステップ607)、ステップ601へ戻る。ステップ605から607の流れは、クライアントから要求された接続先URLが圧縮されていないkeywordを含み、該keywordが変換テーブルに既に存在し圧縮wordが割り当てられている場合に、クライアントのユーザに該圧縮されたURLを知らせる画面を表示するものである。
【0030】
図8は、ステップ607で転送先を表示するページの画面例を示す。このページに表示されている転送先に、手動的あるいは自動的にページが遷移される。クライアントのユーザは、自分が要求した接続先URLに対して、この画面に示された圧縮URLが割当てられていることを知ることができ、これ以降は効率的な圧縮URLを使用できる。
【0031】
ステップ603で接続先URLを抽出することができなかった場合は、クライアント101に接続先URLを要求するページを送信して(ステップ608)、ステップ601へ戻る。
【0032】
図9は、ステップ608で表示する、クライアント101に接続先URLを要求するページの画面例を示す。
【0033】
ステップ605でURL伸張プログラム209からの応答が1でない場合は、URL伸張プログラム209からの応答が−1(エラー)であるかどうかを調べる(ステップ609)。応答が−1である場合は、ステップ604で書き換えた接続先URLへのアクセスエラーを表示するページを生成してクライアント101へ送信し(ステップ610)、ステップ601へ戻る。
【0034】
図10は、ステップ610で表示する、接続先URLのエラーを表示するページの画面例を示す。
【0035】
ステップ609でURL伸張プログラム209からの応答が−1でない場合は、URLの伸張が成功したということであるから、ステップ604のURL伸張プログラム209で書き換えた接続先URLをその接続先URLのホスト部のサーバへコンテンツ要求として送信する(ステップ611)。
図11に、接続先URLのホスト部の例を示す。ホスト部は、URLの「//」以降で最初の「/」までの部分文字列である。
【0036】
ステップ611の後、サーバ102に送信したコンテンツ要求に対する返答のコンテンツを受信する(ステップ612)。受信したコンテンツ内にある各リンク先のURLをURL圧縮プログラム208で書き換える(ステップ613)。コンテンツ内のリンク先とは、<A>タグのhref属性値や<input>タグのaction属性値などである。さらに、ステップ613で書き換えた各リンク先のURLの先頭にプロキシURL702を付加する(ステップ614)。プロキシURL702(図7)とは、プロキシ103に接続することができるURLを表しており、クライアント101が必ずプロキシ103経由でサーバ102に接続するようにしている。ステップ614までで書き換えたコンテンツをクライアント101に転送し(ステップ615)、ステップ601へ戻る。
【0037】
図12は、URL圧縮プログラム208の動作手順を示す流れ図である。この処理では、接続先URLを1文字づつ調べながら「&」や「?」などの分割の区切りになる文字を見つけ、それらで分割された文字列に対して変換ルーチンを施して圧縮を行う。以下、この処理の詳細を説明する。
【0038】
転送プログラム207から接続先URLを取得し、変数inURLに接続先URLを代入する(ステップ1201)。変数iに1を代入し、変数outURLを空にする(ステップ1202)。変数startに変数iの値を代入し、変数keyを空にする(ステップ1203)。
【0039】
次に、変数inURL[i]が文字「&」と等しいかどうかを調べる(ステップ1204)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。ここで、表記X[Y]は、変数Xの文字列のY番目の文字を表している。変数inURL[i]が文字「&」と等しい場合、変数keyには値が設定されていると考えられるので、この変数keyを値要素として処理するために、値変換ルーチンを実行する(ステップ1205)。値変換ルーチンについては後述する。次に、変数outURLの文字列の後尾に変数inURL[i]を表す文字列を追加し、変数iを1増やして(ステップ1206)、ステップ1203に戻る。
【0040】
なお、変数inURL[i]を表す文字列とは、基本的には変数inURL[i]の文字そのものである。ただし、変数inURL[i]の文字をそのまま使用すると、URL規格外のコンテンツ要求のURL701が作成される場合は、エスケープ文字列に変換して使用する。ここで、エスケーブ文字列に変換された文字は、プロキシ103がクライアント101から受信して、接続先URLとして取得されたときに、元の文字表記に変わる。
【0041】
ステップ1204で変数inURL[i]が文字「&」と等しくない場合は、変数inURL[i]が文字「?」あるいは文字「;」と等しいかどうかを調べる(ステップ1207)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。変数inURL[i]が文字「?」あるいは文字「;」と等しい場合、変数startが1であるかどうかを調べる(ステップ1208)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1なら、変数keyを先頭要素として処理するために、URL変換ルーチンを実行し(ステップ1209)、ステップ1206に進む。URL変換ルーチンについては後述する。変数startが1でないなら、ステップ1205に進む。
【0042】
ステップ1207で変数inURL[i]が文字「?」あるいは文字「;」と等しくない場合は、変数inURL[i]が文字「=」と等しいかどうかを調べる(ステップ1210)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。変数inURL[i]が文字「=」と等しい場合、変数startが1であるかどうかを調べる(ステップ1211)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1なら、変数keyを先頭要素として処理するために、URL変換ルーチンを実行し(ステップ1209)、ステップ1206に進む。変数startが1でないなら、変数keyをパラメタ要素として処理するために、パラメタ変換ルーチンを実行し(ステップ1212)、ステップ1206に進む。パラメタ変換ルーチンについては後述する。
【0043】
ステップ1210で変数inURL[i]が文字「=」と等しくない場合は、変数inURL[i]が空であるかどうかを調べる(ステップ1213)。これは、変数inURLの文字列の最後まで来たかの確認である。変数inURL[i]が空の場合、変数startが1であるかどうかを調べる(ステップ1214)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1であるときは、変数keyを先頭要素として処理するために、URL変換ルーチンを実行する(ステップ1215)。そして、転送プログラム207の接続先URLを変数outURLの値に書き換えて(ステップ1216)、終了する。
【0044】
ステップ1214で変数startが1でないなら、変数keyを値要素として処理するために、値変換ルーチンを実行し(ステップ1217)、ステップ1216に進む。
【0045】
ステップ1213で変数inURL[i]が空でない場合は、変数inURL[i]が文字「!」と等しいかどうかを調べる(ステップ1218)。これは、URLに利用されている文字「!」を識別して、文字列「!!」に置き換えるためである。すなわち、2つ続く「!」で通常の文字「!」の1文字を表す。本実施の形態では、文字「!」を特殊文字(これに続く文字が圧縮されたものであることを示す)として利用するため、通常の文字「!」と区別する必要がある。変数inURL[i]が文字「!」と等しいなら、変数keyの文字列の後尾に文字「!」を追加し(ステップ1219)、ステップ1220に進む。なお、表記Add(X,Y)は、変数Xの文字列に、変数Yの文字あるいは文字列を追加することを表している。ステップ1218で変数inURL[i]が文字「!」と等しくない場合は、直ちにステップ1220に進む。次に、変数keyの文字列の後尾にinURL[i]の文字を追加して、変数iを1増やし(ステップ1220)、ステップ1204に戻る。
【0046】
次に、図13を参照して、図12の圧縮処理で呼出している変換ルーチンの動作手順を説明する。なお、図12におけるURL変換ルーチンとパラメタ変換ルーチンと値変換ルーチンは、動作手順が同じであるので、図13でまとめて説明するものとする。ただし、URL変換ルーチンは変換テーブルとしてURL変換テーブル211を、パラメタ変換ルーチンは変換テーブルとしてパラメタ変換テーブル212を、値変換ルーチンは変換テーブルとして値変換テーブル213を、それぞれ参照する。これらの変換テーブルについては図4で説明した。
【0047】
まず、変換テーブルからkeyword列が変数keyであるレコードを検索する(ステップ1301)。ステップ1301で検索したレコードがあるかどうかを調べる(ステップ1302)。これは、変換レコードに変数keyに関連する要素があるかの確認である。そのようなレコードがあるときは、当該レコードの圧縮wordフィールドに値が格納されているかどうかを調べる(ステップ1303)。これは、変数keyが圧縮可能であるかの確認である。圧縮wordフィールドに値があれば、変数keyに圧縮wordフィールドの値を代入する(ステップ1304)。次に、変数outURLに文字「!」を追加する(ステップ1305)。また、変数outURLに変数keyの文字列を追加して(ステップ1306)、終了する。
【0048】
ステップ1302で検索したレコードがない場合、あるいはステップ1303で圧縮wordフィールドに値がない場合は、直ちにステップ1306に進み、変数outURLに変数keyの文字列を追加して、終了する。
【0049】
図14は、図6の転送プログラム207から呼び出されるURL伸張プログラム209の動作手順を示す流れ図である。この処理では、URL圧縮の逆を行っている。すなわち、接続先URLを1文字づつ調べながら「&」や「?」などの分割の区切りになる文字を見つけ、それらで分割された文字列に対して逆変換ルーチンを施して伸張を行う。以下、この処理の詳細を説明する。
【0050】
転送プログラム207から接続先URLを取得し、変数inURLに接続先URLを代入する(ステップ1401)。変数iに1を代入し、変数returnを0にし、変数outURLを空にする(ステップ1402)。変数startに変数iの値を代入し、変数keyを空にする(ステップ1403)。
【0051】
次に、変数inURL[i]が文字「&」と等しいかどうかを調べる(ステップ1404)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。変数inURL[i]が文字「&」と等しいときは、変数keyを値要素として処理するために、値逆変換ルーチンを実行する(ステップ1405)。値逆変換ルーチンについては後述する。次に、変数outURLの文字列の後尾にinURL[i]の文字を追加し、変数iを1増やして(ステップ1406)、ステップ1403に戻る。
【0052】
ステップ1404で変数inURL[i]が文字「&」と等しくない場合は、変数inURL[i]が文字「?」あるいは文字「;」と等しいかどうかを調べる(ステップ1407)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。変数inURL[i]が文字「?」あるいは文字「;」と等しいときは、変数startが1であるかどうかを調べる(ステップ1408)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1なら、変数keyを先頭要素として処理するために、URL逆変換ルーチンを実行し(ステップ1409)、ステップ1406に進む。URL逆変換ルーチンについては後述する。変数startが1でないなら、ステップ1405に進む。
【0053】
ステップ1407で変数inURL[i]が文字「?」あるいは文字「;」と等しくない場合は、変数inURL[i]が文字「=」と等しいかどうかを調べる(ステップ1410)。これは、変数inURL[i]が接続先URLの要素分割文字列であるかの確認である。変数inURL[i]が文字「=」と等しいときは、変数startが1であるかどうかを調べる(ステップ1411)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1なら、変数keyを先頭要素として処理するために、ステップ1409へ進む。変数startが1でないなら、変数keyをパラメタ要素として処理するために、パラメタ逆変換ルーチンを実行し(ステップ1412)、ステップ1406に進む。パラメタ逆変換ルーチンについては後述する。
【0054】
ステップ1410で変数inURL[i]が文字「=」と等しくない場合は、変数inURL[i]が空であるかどうかを調べる(ステップ1413)。これは、変数inURLの文字列の最後まで来たかの確認である。変数inURL[i]が空であるときは、変数startが1であるかどうかを調べる(ステップ1414)。これは、現在の処理が先頭要素に対する処理であるか否かの確認である。変数startが1である場合は、変数keyを先頭要素として処理するために、URL逆変換ルーチンを実行する(ステップ1415)。次に、変数returnが-1(エラー)でないことを調べる(ステップ1416)。これは、逆変換のエラーがあったかの確認である。変数returnが-1でないなら、転送プログラム207の接続先URLを変数outURLの値に書き換える(ステップ1417)。そして、転送プログラム207に変数returnの値を返して(ステップ1418)、終了する。
【0055】
ステップ1416で変数returnが-1であるときは、転送プログラム207に変数returnの値を返して(ステップ1418)、終了する。また、ステップ1414で変数startが1でないなら、変数keyを値要素として処理するために、値逆変換ルーチンを実行し(ステップ1419)、ステップ1417に進む。
【0056】
ステップ1413で変数inURL[i]が空でない場合は、変数keyの文字列の後尾にinURL[i]の文字を追加し、変数iを1増やして(ステップ1420)、ステップ1404に戻る。
【0057】
次に、図15を参照して、図14の伸張処理で呼出している逆変換ルーチンの動作手順を説明する。なお、図14におけるURL逆変換ルーチンとパラメタ逆変換ルーチンと値逆変換ルーチンは、動作手順が同じであるので、図15でまとめて説明するものとする。ただし、URL逆変換ルーチンは変換テーブルとしてURL変換テーブル211を、パラメタ逆変換ルーチンは変換テーブルとしてパラメタ変換テーブル212を、値逆変換ルーチンは変換テーブルとして値変換テーブル213を、それぞれ参照する。
【0058】
まず、変数iに1を代入する(ステップ1501)。変数key[i]が文字「!」と等しいかどうかを調べる(ステップ1502)。これは、圧縮用の特殊文字「!」が使われているかを確認する処理である。変数key[i]が文字「!」と等しいときは、変数iを1増やして(ステップ1503)、ステップ1502へ戻る。ステップ1502で変数key[i]が文字「!」と等しくないなら、変数iを2で割った数の整数部分の個数だけ文字「!」を、変数tmpに代入する(ステップ1504)。これは通常文字の「!」を再現しているものである。ステップ1504の時点では、iが偶数なら変数keyの先頭から奇数個の文字「!」が検出されたことになり、iが奇数なら変数keyの先頭から偶数個の文字「!」が検出されたことになる。
【0059】
次に、変数keyに変数key[i]以降の文字列を代入する(ステップ1505)。例えば、変数iが2で変数key="!abc"の場合には、"abc"だけが変数keyに代入される。変数tmpの文字列の後尾に変数keyの文字列を連結し、その値を変数keyに代入する(ステップ1506)。
【0060】
変数iが偶数であるかどうかを調べる(ステップ1507)。これは、変数keyに特殊文字「!」が含まれているかを確認する処理である。変数iが偶数である場合は、圧縮を示す特殊文字「!」が含まれているということであるから、変換テーブルから圧縮word列が変数keyであるレコードを検索する(ステップ1508)。ステップ1508で検索したレコードがあるかどうかを調べる(ステップ1509)。これは、変換テーブルに変数keyに関連する要素があるか否かの確認である。あれば、ステップ1510へ進む。ここでは、発見したレコードの項番をxとする。検索したレコードがなければ、ステップ1521へ進む。
【0061】
ステップ1510では、項番xの出現回数フィールドの値を1つ増やし、アクセス日フィールドの値を現在の日付に変更する(ステップ1510)。ここで、表記Y(X)は、項番XのフィールドYの値を表している。次に、変数keyに項番xのkeywordフィールドの値を代入する(ステップ1511)。また、変数outURLの文字列に変数keyの文字列を追加して(ステップ1512)、終了する。ステップ1509で、検索したレコードがない場合は、変数returnに-1(エラー)を代入して(ステップ1521)、終了する。
【0062】
ステップ1507で変数iが偶数ではない、すなわち変数iが奇数であるなら、圧縮を示す特殊文字「!」が含まれていないということであるから、変換テーブルからkeyword列が変数keyであるレコードを検索する(ステップ1513)。ステップ1513で検索したレコードがあるかどうかを調べる(ステップ1514)。これは、変換テーブルに変数keyに関連する要素があるか否かの確認である。あれば、ステップ1515へ進む。ここでは、発見したレコードの項番をxとする。検索したレコードがなければ、ステップ1519へ進む。
【0063】
ステップ1515では、項番xのレコードの圧縮wordフィールドに要素があるかどうかを調べる(ステップ1515)。これは、変数keyの文字列に対して既に圧縮が行われ圧縮wordがあるのかを確認する処理である。項番xのレコードの圧縮wordフィールドに要素があれば、圧縮wordがあるということだから、変数returnに1を代入し(ステップ1520)、ステップ1516へ進む。ステップ1515で項番xのレコードの圧縮wordフィールドに要素がなければ、ステップ1516へ進む。
【0064】
次に、項番xの出現回数フィールドの値を1つ増やし、アクセス日フィールドの値を現在の日付に変更する(ステップ1516)。項番xの出現回数フィールドの値が、閾値テーブル214のアクセス数の値を超えているかどうか調べる(ステップ1517)。これは、変数keyを圧縮するかどうかを決める処理である。項番xの出現回数フィールドの値が閾値テーブル214のアクセス数の値を超えている場合、圧縮割当てルーチンを実行して(ステップ1518)、ステップ1512へ進む。圧縮割当てルーチンについては、後述する。
【0065】
ステップ1514で検索したレコードがない場合は、変換テーブルに新しいレコードを追加する(ステップ1519)。追加したレコードの項番には、変換テーブルの既存の項番の値と重複しない、最も小さい数を代入する。この値をxとする。追加したレコードのkeyword(x)フィールドには変数keyの値を、出現回数(x)フィールドには0を代入する。圧縮wordは空にする。そして、ステップ1516へ進む。
【0066】
次に、図16を用いて、図15のステップ1518で呼び出される圧縮割当てルーチンの動作手順を説明する。このルーチン内で利用されている変換テーブルは、呼び出し元がURL逆変換ルーチンのときはURL変換テーブル211を、パラメタ逆変換ルーチンのときはパラメタ変換テーブル212を、値逆変換ルーチンのときは値変換テーブル213を、それぞれ示すものとする。
【0067】
変換テーブルから圧縮wordが空でないレコードを抽出する(ステップ1601)。新しく生成する圧縮wordの文字列数が、ステップ1601で抽出したすべてのレコードのどの圧縮wordフィールドの文字列数よりも長いかを調べる(ステップ1602)。新しく生成する圧縮wordの文字列が長ければ、ステップ1603へ進む。そうでなければ、ステップ1607へ進む。なお、ステップ1602で用いる新しい圧縮wordは、定められた文字集合の組み合わせで生成するものとする。この生成順序は文字数が小さい順に行うものとする。例えば、1文字で1,2,…の順に9まで割当て、その次に2文字で10,11,…と割当てていくような生成方法でよい。
【0068】
ステップ1603では、圧縮wordの文字数が最小、かつ、現在の日付から閾値設定テーブル214の圧縮word保持期間だけ遡った日よりも古いアクセス日フィールドの値を持つレコードを、ステップ1601で抽出したレコードの中から検索する(ステップ1603)。ステップ1603で検索したレコードがあるかどうかを調べる(ステップ1604)。これは、変換テーブルに、決められた期間以上利用されていない圧縮wordを持つレコードがないのかを確認する処理である。検索したレコードがあれば、ステップ1605へ進む。ここでは、発見したレコードの項番はyとする。検索したレコードがなければ、ステップ1607へ進む。
【0069】
ステップ1605では、圧縮word(x)に圧縮word(y)の文字列を代入する。次に、変換テーブルから項番yのレコードを削除して(ステップ1606)、終了する。
【0070】
ステップ1602で新しく生成する圧縮wordの文字列が、ステップ1601で抽出したすべてのレコード中の圧縮wordの最長文字列よりも長くない場合、またはステップ1604で検索したレコードがない場合は、圧縮word(x)にステップ1602で生成した新しい圧縮wordを代入して(ステップ1607)、終了する。
【0071】
次に、図17の流れ図を用いてガベージコレクションプログラム210の動作手順を説明する。このプログラムは、全ての変換テーブル(URL変換テーブル211、パラメタ変換テーブル212、値変換テーブル213)を対象に定期的に実行するものである。
【0072】
変換テーブルから圧縮wordが空であるレコードを抽出する(ステップ1701)。現在の日付から閾値設定テーブル214のkeyword保持期間だけ遡った日よりも古いアクセス日フィールドの値を持つレコードを、ステップ1701で抽出したレコードから抽出する(ステップ1702)。ステップ1702で抽出したレコードを削除して(ステップ1703)、終了する。
【0073】
なお、上記実施の形態では、URLを分割した各分割要素について圧縮と伸張を行っているが、URLを単位として圧縮・伸張を行うようにしてもよい。
【0074】
【発明の効果】
以上説明したように、本発明によれば、World Wide WebのようなURLを利用するデータ配信システムにおいて、アクセスの集中するページのURLを統計情報に基づいて効率的に圧縮することができる。また、アクセスの少なくなったページに割当てられていた圧縮URLを、アクセスの多くなったページの圧縮URLに再割当てすることができる。さらに、クライアントが非圧縮URLへのリンクを記録して、その後プロキシがそのリンクを圧縮した場合、クライアントが記録している非圧縮URLで直接アクセスしても、プロキシが圧縮されたURLを通知するので、より効率的なURLをクライアントに知らせることができる。また、分割要素に分けて圧縮・伸張するので、セッション情報が付加されたリンク先のURLであっても、そのセッション情報以外の部分については圧縮URLを利用できるので、効率的な利用が可能である。
【図面の簡単な説明】
【図1】本発明の実施の形態の利用環境を示す図である。
【図2】システム全体の構成を示すシステム構成図である。
【図3】 URLの分割の例を示す構成図である。
【図4】 URL変換テーブル・パラメタ変換テーブル・値変換テーブルの構成を示す構成図である。
【図5】閾値設定テーブルの構造を示す構成図である。
【図6】転送プログラムの動作を説明する流れ図である。
【図7】コンテンツ要求の接続先URLの例を示す構成図である。
【図8】転送時の表示画面の例を示す構成図である。
【図9】接続先URLを要求する画面の例を示す構成図である。
【図10】エラー時の表示画面の例を示す構成図である。
【図11】 URLのホスト部の例を示す構成図である。
【図12】 URL圧縮プログラムの動作を説明する流れ図である。
【図13】 URL変換ルーチン・パラメタ変換ルーチン・値変換ルーチンの動作を説明する流れ図である。
【図14】 URL伸張プログラムの動作を説明する流れ図である。
【図15】 URL逆変換ルーチン・パラメタ逆変換ルーチン・値逆変換ルーチンの動作を説明する流れ図である。
【図16】圧縮割当てルーチンの動作を説明する流れ図である。
【図17】ガベージコレクションプログラムの動作を説明する流れ図である。
【符号の説明】
101…クライアント、102…サーバ、103…プロキシ、104…ネットワーク、201…CPU、202…メモリ、203…通信部、204…入力部、205…出力部、206…記憶部、207…転送プログラム、208…URL圧縮プログラム208、209…URL伸張プログラム、210…ガベージコレクションプログラム、211…URL変換テーブル、212…パラメタ変換テーブル、213…値変換テーブル、214…閾値設定テーブル、215…バス。
Claims (5)
- サーバからのコンテンツをクライアントに転送し、クライアントからのコンテンツ要求をサーバに転送するシステムに適用するリンク先圧縮システムであって、
クライアントからのコンテンツ要求に含まれるURLとそのURLのアクセス回数をマッピング情報として記録する手段と、
前記アクセス回数が予め設定した回数以上になったとき、そのURLの文字数よりも短い文字数の圧縮URLをマッピング情報として記録する手段と、
サーバからのコンテンツに含まれるすべてのリンク先のURLを前記マッピング情報に基づいて圧縮URLに変換する手段と、
クライアントからのコンテンツ要求に含まれる圧縮URLを前記マッピング情報に基づいてURLに変換する手段と
を備えることを特徴とするリンク先圧縮システム。 - サーバからのコンテンツをクライアントに転送し、クライアントからのコンテンツ要求をサーバに転送するシステムに適用するリンク先圧縮システムであって、
クライアントからのコンテンツ要求に含まれるURLを、先頭要素とパラメタ要素と値要素とに分割する手段と、
クライアントからのコンテンツ要求に含まれるURLを分割した各分割要素とその分割要素のアクセス回数をマッピング情報として記録する手段と、
前記アクセス回数が予め設定した回数以上になったとき、その分割要素を示す文字数よりも短い文字数の圧縮ワードをマッピング情報として記録する手段と、
サーバからのコンテンツに含まれるすべてのリンク先のURLのそれぞれに対して、その URL を先頭要素とパラメタ要素と値要素とに分割し、前記マッピング情報に基づいて各分割要素を圧縮ワードに変換することにより圧縮URLを取得し、前記サーバからのコンテンツ中の当該URLを前記取得した圧縮URLに書き換える手段と、
クライアントからのコンテンツ要求に含まれる圧縮URLを先頭要素とパラメタ要素と値要素とに分割し、前記マッピング情報に基づいて各分割要素の圧縮ワードを元の分割要素を示す文字列に変換することにより元のURLを取得し、前記クライアントからのコンテンツ要求に含まれる圧縮URLを元のURLに書き換える手段と
を備えることを特徴とするリンク先圧縮システム。 - 請求項1または2に記載のリンク先圧縮システムにおいて、
前記マッピング情報として、当該URLまたは分割要素へのアクセス日付を記録する手段と、
前記マッピング情報のアクセス日付が、現在日から予め設定したタイムアウト期間だけ過去に遡った日付よりも古い場合に、当該マッピング情報を削除する手段と
をさらに備えることを特徴とするリンク先圧縮システム。 - 請求項3に記載のリンク先圧縮システムにおいて、
前記タイムアウト期間を通常データ用と圧縮データ用の2つ用意し、前記マッピング情報のうち、圧縮URLまたは圧縮ワードが登録されているものについては前記圧縮データ用のタイムアウト期間を用いて当該マッピング情報を削除するかどうかを決定し、圧縮URLまたは圧縮ワードが登録されていないものについては前記通常データ用のタイムアウト期間を用いて当該マッピング情報を削除するかどうかを決定する手段をさらに備えることを特徴とするリンク先圧縮システム。 - 請求項1または2に記載のリンク先圧縮システムにおいて、
クライアントからサーバへのコンテンツ要求に含まれるURLが、圧縮URLでなく、かつ、前記マッピング情報に当該URLに対応する圧縮URLが登録されている場合、クライアントに圧縮URLを利用する旨の通知を行う手段をさらに備えることを特徴とするリンク先圧縮システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002090055A JP3916219B2 (ja) | 2002-03-27 | 2002-03-27 | リンク先圧縮システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002090055A JP3916219B2 (ja) | 2002-03-27 | 2002-03-27 | リンク先圧縮システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003288288A JP2003288288A (ja) | 2003-10-10 |
JP3916219B2 true JP3916219B2 (ja) | 2007-05-16 |
Family
ID=29235444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002090055A Expired - Fee Related JP3916219B2 (ja) | 2002-03-27 | 2002-03-27 | リンク先圧縮システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3916219B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101222432B1 (ko) | 2011-07-06 | 2013-01-15 | 주식회사에어플러그 | 고정 호스트 주소에 기반하여 복수의 이종망(異種網)들을 선택적으로 사용하여 데이터 송수신할 수 있게 하는 장치와 이를 위한 방법 |
CN102306184B (zh) * | 2011-08-30 | 2014-01-15 | 百度在线网络技术(北京)有限公司 | 获得链接压缩地址信息及压缩网页的方法、装置和设备 |
WO2014045318A1 (ja) | 2012-09-21 | 2014-03-27 | 富士通株式会社 | 圧縮プログラム、圧縮方法及び圧縮装置 |
JP6065914B2 (ja) | 2012-09-21 | 2017-01-25 | 富士通株式会社 | 制御プログラム、制御方法および制御装置 |
KR20140093491A (ko) * | 2013-01-18 | 2014-07-28 | 정양원 | 단축 url의 관리 방법, 관리 장치 및 그 관리를 수행하는 컴퓨터 프로그램을 저장한 저장 매체 |
CN113301175B (zh) * | 2020-07-14 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 服务调用方法及数据存储方法、装置、设备和存储介质 |
-
2002
- 2002-03-27 JP JP2002090055A patent/JP3916219B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003288288A (ja) | 2003-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8700573B2 (en) | File storage service system, file management device, file management method, ID denotative NAS server and file reading method | |
CA2229392C (en) | Method and apparatus for precaching data at a server | |
US8407363B2 (en) | Generating low resolution user interfaces for transmission to mobile devices | |
US8463874B2 (en) | Method and system of recording and reproducing web application operation | |
CN110401724B (zh) | 文件管理方法、文件传输协议服务器及存储介质 | |
JP2003281023A (ja) | データ転送装置、データ転送方法、データ受信表示装置、プログラム | |
JP2002268937A (ja) | データ転送装置、データ転送方法及びプログラム | |
KR20030076718A (ko) | 인터넷 프로토콜을 지원하는 이동 단말 장치에 저장된파일들에 접근하기 위한 방법 및 장치 | |
WO2014161261A1 (zh) | 数据的存储方法及装置 | |
JP2004310371A (ja) | ファイル共有システム及び方法、ファイル共有サーバ、ファイル共有サービスのクライアント端末、ファイル共有プログラム、ファイル共有プログラムを記録した記録媒体 | |
US20010002471A1 (en) | System and program for processing special characters used in dynamic documents | |
JP2002108671A (ja) | コンピュータ処理システムにおいてカスタマイズした情報を提供する方法とシステム | |
WO2016146009A1 (zh) | Html页面压缩方法及装置 | |
WO2003046727A1 (fr) | Systeme de generation d'informations, procede de generation d'informations et programme de generation d'informations | |
JP4894253B2 (ja) | メタデータ生成装置およびメタデータ生成方法 | |
JP3916219B2 (ja) | リンク先圧縮システム | |
CN109284428B (zh) | 数据处理方法、装置及存储介质 | |
CN111680247B (zh) | 网页字符串的本地调用方法、装置、设备及存储介质 | |
JP2003345708A (ja) | データ転送装置、データ転送方法及びプログラム | |
JP2009110216A (ja) | サーバ装置、クライアント装置、サーバベースコンピューティングシステムおよびプログラム | |
JPH1125125A (ja) | ネットワーク情報探索装置、ネットワーク情報探索方法および記憶媒体 | |
CN110569456B (zh) | Web端数据离线缓存方法及装置、电子设备 | |
US20050198331A1 (en) | Seamless system and recording medium, and computer system process continuing method | |
JP2006228016A (ja) | 情報管理装置 | |
JP4259858B2 (ja) | Wwwサイト履歴検索装置及び方法並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060915 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061113 |
|
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: 20070205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070205 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |