Perl/CGI研究室 'PERL-LABO'

Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

リンククリックカウント履歴を記録して完成

研究内容

リンククリックカウント履歴を記録する研究です。

詳細

CGIプログラム側を整備して完成

リンククリックをカウントする方法は分かりましたので、 あとはCGIプログラム側で渡されたURLをカウントする処理を改良して完成です。

「なにかを数える」という処理はこれまでもいろいろしてきましたが、 今回の「URLを数える」という処理は「リファラーカウンター」とほぼ同じ処理になります。 そこで、リファラーカウンターと同じ処理を行う「リンククリックカウンター」CGIプログラムを作ります。

作るといっても、本当にちょこっとリファラーカウンターを変更するだけでできてしまうので、 詳細は省略します(^^;

少し改良:自サイト内の移動は記録しないようにする

リンククリックですが、自分のサイト内を移動するためのリンクのクリック回数は記録しなくてもいいですよね。 今回のテーマは、相互リンクしているサイト様にこちらからどれくらいの人が行っているのか、 「リファラーカウンター」の逆の情報を取得するというものでしたので。 自サイト内の移動は記録しないようにしましょう。 これは、JavaScript側で行うことにします。単純に、リンク先のURLに、 自分のサイトのトップページのURLが含まれていたら処理を行わないようにします。 自分のサイトのトップページのURLは、ドメインまではスクリプトの中で取得できるので、 「リンク先が自分と同じドメインの場合は処理を行わない」ということにしましょう。 このサイトのように独自ドメインの場合はこれでOKです。 独自ドメインでない場合は、自分のトップページのURLをスクリプトの中に直接書き込まないといけませんが、 それもできるようにしておきましょう。

完成品

そうしてできたのが次のスクリプトです。ファイル名は lccounter.js



これを読み込む次のタグを、リンク集ページに入れます。

<script type="text/javascript" src="/lccounter.js"></script>

外部へのリンクがいろんなページにある場合は、全てのページにこの1行を加えるのもいいですね。

CGIプログラムのソースは省略しますが、次のようにクリック回数が記録されます。 (当サイトの場合はアクセスが少ないのでほとんどゼロ。相互リンクサイト様申し訳ございません・・・。 このページを見てくださった貴方、 良かったら当サイトの相互リンクサイトにも訪問してください。)

完成品 - リンククリックカウンター履歴を表示します

これで、今回の一連の研究は終わりです!

後で気がついた、ちょっとした問題点

追記なのですが、この仕組み、しばらく使っていて気がついたことがあります。 たまに、リンクをクリックしたときの反応が鈍くなることがあるんです。 これは、裏でCGIプログラムにアクセスしたときに、CGIプログラムの反応が鈍かったときに起こります。 CGIプログラムを間に挟んだときと違い、クリックしたあとに新しいウィンドウも出ず、ブラウザが 固まったような状況になります。 これは、CGIプログラムを間に挟んだときも同じですので仕方がない部分もあるのですが、回避策もあります。 同期通信ではなく、非同期通信にするという方法です。

もともと非同期でなく、同期通信にしていたのは、通信中にページが遷移してしまうと通信が終わる前に 遮断されてしまうかなぁと思ったからなのですが、リンクに target=_blank を付けて別ウィンドウで 表示することにしていれば、リンク先が開いても元のページが閉じられないので、非同期通信でも問題ありません。

非同期通信にするのは、難しくありません。wget関数の、http.open という関数呼び出しの第3引数を true にして、 return http.responseText; を削除します。 レスポンスを利用するにはコードの変更が必要ですが、今回はレスポンスは不要なのでキニシナイ。 状況によって同期通信と非同期通信を使い分けましょう!

Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

Copyright (c) 'PERL-LABO' All Rights Reserved.  リンクフリーです。