中継君の使用方法

中継君の使用方法

Posted at July 21,2005 9:05 PM
Tag:[BlogPeople, Cache, Customize, jc, Link, MyBlogList, TrackbackPeople]

中継君はBlogPeopleリンクリスト等の表示の遅延を避けるため、キャッシュに一旦保存したものを表示するためのツールです。便利そうだと思っていましたが動作や設定方法がいまひとつ分からなかったので(バカ)、BlogPeople を例に Javascript の基本動作から中継君の設定方法まで説明します。
Windows自宅サーバでの利用ですのでパーミッションの設定等もれてましたらお許しください。

2006.10.24 追記簡単な設定で中継君とほぼ同様の機能を実現する「BlogPeople 等のリンクリストによる表示の遅延を解消する(その1:JavaScript編)」を公開しています。

JavaScript の基本的な動作
BlogPeople のリンクリストを取得するタグは、

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

となっています。当サイトで折りたたみやツリー化等のカスタマイズをされている方には馴染みのあるこの書き方は、<head> ? </head> に挿入している JavaScript 外部ファイルのインクルードと同じで、src 属性に記述されたURLを実行し、その結果を type 属性(MIMEタイプ)に準じた形式で出力します。ここでは "text/javascript" なのでJavaScriptとして認識されます。
つまり、このタグが埋め込まれたページをブラウザで実行すると、

http://www.blogpeople.net/display/usr/xxx.js

が実行され、結果としてリンクリストを表示するためのJavaScript文

document.write('<div class=\'blogpeople-main\'>');
document.write('<a href=\'http://www.blogpeople.net/cgi-bin/click.cgi?u=http%3A%2F%2Fxxx\' target=\'_blank\' title=\'更新日:05年07月21日(Thu) 12時28分 \' >hogehoge1blog</a><br />');
document.write('<a href=\'http://www.blogpeople.net/cgi-bin/click.cgi?u=http%3A%2F%2Fxxx\' target=\'_blank\' title=\'更新日:05年07月21日(Thu) 12時31分 \' >hogehoge2blog</a><br />');
                    :

を取得・表示します(?)。
このタグを実行して BlogPeople リンクリストとして表示するまでの時間は、ほとんど

http://www.blogpeople.net/display/usr/xxx.js

の応答時間に依存します。皆さんのページに埋め込まれた同じようなURLを、ブラウザのアドレスに直接入力して実行すれば、応答時間を体感できると思います。

中継君の役割
中継君は CGIスクリプトで、あるURLの実行結果をキャッシュ(一時的なファイル)に保存して、それを表示するという機能をもっています。
中継君を起動するURLのイメージは下記のようになります。

http://domain/path/to/jc.cgi?<これまでに起動していたURL>

このURLを表示したいページの任意の場所に埋め込みます。
例えば、先の BlogPeople リンクリストの JavaScript のタグであれば、

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

<script language="javascript" type="text/javascript" src="http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

と、中継君のCGIスクリプトを実行するURL(青色)を挿入します(他に事前設定がありますがそれは別途)。この設定により、ブラウザがこの行を表示する時、まず

http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js

というURL(=CGI)を実行します。これまで設定されていたURLは "?" の後ろに設定された形になっていまして、中継君のプログラムにパラメータ(query)として渡され、内部で起動されます。

内部起動して取得したデータ(?)をキャッシュに一旦保存し、さらにそれををブラウザに表示します。2回目以降(厳密には指定した周期になるまで)はこのキャッシュにあるデータをブラウザに表示するので、httpアクセスによる表示の遅延を削減することができます

中継君は分単位でキャッシュの取得周期を設定できます。例えば10分に設定していれば、最初にキャッシュを取得してから約10分間はキャッシュのデータを使用しますが、10分後には正規のURLにアクセスして新しいデータを取得し、キャッシュに保存します。なお旧バージョンではキャッシュが複数生成されたようですが、現在はひとつのURLに対して1つしか生成されないようになっています(=常に上書き)。

先の記述で「遅延0」ではなく「遅延を削減」としているのは、次の周期には正規のURLでデータを再び取得するため、たまたまその回に当たると表示が遅くなる時があるためです。

設置方法

1.アーカイブのダウンロード
中継君のページより、最新記事の下にある「ダウンロード」をクリック。次のページで「中継君 Ver.1.4.2(この記事の投稿時点)」のリンクをクリックしてダウンロード。ダウンロードしたらアーカイブを解凍します。下記のファイルがあることを確認してください。

jc.cgi
ttl_sample.txt

2.ファイルの修正

Perlのパス
jc.cgi を任意のエディタで開いて、使用しているブログがMovable Type の場合は、1行目の

#!/usr/local/bin/perl -w

#!/usr/bin/perl -w

に変更します。ここを修正せずに実行すると結果が何も返却されません(ブラウザから直接実行すると500 エラーになります)。

ホスト制限
特定のホストからアクセスされた場合だけ中継君を起動したい場合は、次の行の右辺に該当のホストを追加します(追加方法はファイルに記載されています)。

my @url =  ("");

どこからアクセスされても常に起動する場合はデフォルトの状態でOKです。
この機能の動作は、ここに設定されたデータと HTTP_REFERER と比較して、完全一致または部分一致した場合、フィルタリングします。フィルタ対象のホストであれば何も(キャッシュのデータも)返却せずに処理を終了します。

キャッシュ周期
データがキャッシュされてから次にキャッシュするまでの周期を変更したい場合は次の行の右辺を変更します。

my $cache_ttl = 2 * 60;

デフォルトは120分(2*60)でキャッシュを更新する設定になっています。このデータは、キャッシュに対してファイルテスト演算子(-M オプション)を実行し、キャッシュが更新されてからどれだけの時間が経過しているかを調べることで実現しています。

アクセスするURL別に周期を設定したい場合は ttl.txt というファイルを用います。例えば BlogPeople リンクリストと MyBlogList の周期をそれぞれ 3時間・1時間に設定する場合は、ttl.txt に

www.blogpeople.net/display/usr/ 180
list.myblog.jp/list 60

と記述します。このファイルの設定は先の $cache_ttl の設定より優先されます。一律同じ周期でよければ ttl.txt の設定は不要です(ファイル自体不要)。
BlogPeople については ttl_sample.txt にデフォルトで設定されていますので、このファイル名を ttl.txt に変更するだけで使えるようになります。

3.ファイルのアップロード
jc.cgi と、必要に応じて ttl.txt を CGI が実行できるパスにアップロードします。ttl.txt は jc.cgi と同じディレクトリにアップロードしてください。jc.cgi のパーミッションは他の CGIファイルと同じように変更してください(755 とか 777 等)。

4.cache ディレクトリの作成
ファイルをアップロードしたディレクトリの直下に cache というディレクトリを作成します。このディレクトリは中継君が最初に起動された時に自動的に作ってくれますが、パーミッションが誤っていると作成されないので予め作っておいた方が無難です(強制している訳ではありません)。
このディレクトリ配下にキャッシュを自動的に作りますので、cache ディレクトリのパーミッションを 755 や 777 等に変更しておきます(中継君による自動生成では 755 にしているようです)。

5.テンプレートの変更
再掲になりますが、各テンプレートにある BlogPeople リンクリスト等を起動するタグに、中継君のURLを挿入します。

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

<script language="javascript" type="text/javascript" src="http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

とします。jc.cgi が mt.cgi や mt-comments.cgi と同じディレクトリにあれば、

<script language="javascript" type="text/javascript" src="<$MTCGIPath$>jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

とするのが良いでしょう。
挿入したら、保存・再構築します。

6.中継君の実行
挿入したページをブラウザで表示させます。初回はキャッシュがありませんので、キャッシュを作るために正規のURLにアクセスします。正常に動作すれば設定前と同様にリンクリスト等が表示されます。
心配であれば、URLをブラウザに直接入力して実行してみてください(URLに正規のURLを "?" で付けることもお忘れなく)。

http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js

正常に動作すればリンクリスト等の結果が表示されます。2回目以降はサクッと表示される筈です。

以上です。なお中継君の実行には Perlモジュールの LWP が必要です(多分主要なレンタルサーバでは大丈夫と思います)。

関連記事
zenback
人気エントリー
トラックバックURL


トラックバック

MT移行完了 from カイ氏伝MT
まだまだ荒削りですが一通りやったのでこっちで本格運用始めます。大変だけど自分でい... [続きを読む]

Tracked on April 27, 2006 10:55 PM

中継君ver1.4.3の設置方法 from digital lab
小粋空間のyujiroさんの話によると中継君よりも便利なものがあるらしいのですが、せっかく設置できたので今の内に設置方法を書いておこうと思います。今回は「... [続きを読む]

Tracked on October 12, 2006 6:52 AM
コメント

中継君設定してみました。
BlogPeoplもMyblogListも登録数は少なく、不便を感じていませんでしたが、一瞬で表示されるようになり思った以上の効果があるようです。
他にいろいろ応用できそうですね。

[1] Posted by eizo : July 22, 2005 1:14 PM

>eizoさん
こんばんは。
記事参照ありがとうございます。

はい、あとは Google Similar Search で結構利用されているようです。

[2] Posted by yujiro : July 23, 2005 12:50 AM

中継君に代わるものがあるようですが、設置することができたので記事をアップしてトラックバックもいただいていきました。

また、新しい記事の方もチェックしに来ます。

[3] Posted by ゆう : October 12, 2006 2:09 PM

>ゆうさん
こんにちは。
無事設置できたようですね。
おめでとうございます!
ちなみに中継君は私も苦労しました。(笑)

それでは公開までお待ちください。

[4] Posted by yujiro : October 12, 2006 4:16 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)