ユーザがページに滞在した時間をサーバに記録するJavaScript
Ajaxの普及に伴い、ページ当たりのユーザの滞在時間が注目されるようになっている。従来、サービスがユーザに与えるインプレッションの指標としてページ・ビューが広く用いられている。しかし、Ajaxを利用するとページの移動があまり発生しないため、ページ・ビューが低くなってしまう。そこで、インプレッションの指標として、滞在時間を使おうという動きがある。
今回、JavaScriptでユーザの滞在期間が記録できるかどうか調べてみた。取り組む前は難しいかなと思ったが、実際にはとても簡単であった。コードは下記。
(function(){ var start = new Date; window.onunload = function(){ var time = (new Date - start ); var image = new Image; image.src = "/dummy?t=" + time + "&url=" + document.location; } })();
このように記述すると、Webサーバに次のようなログが残る。
127.0.0.1 - - [18/Mar/2006:19:52:09 +0900] "GET /dummy?t=3295&url=http://localhost/test.html HTTP/1.1" 404 277
このログを後で解析すれば、ページの滞在時間を求めることが出来る。IE6, Firefox1.5での動作を確認した。
なお、上記スクリプトはwindow.onunloadを上書きしている点に注意。prototype.jsを使うならば、次のようにEvent.observeを使った方が良いだろう。
(function(){ var start = new Date; Event.observe(window, "unload", function(){ var time = (new Date - start ); var image = new Image; image.src = "/dummy?t=" + time + "&url=" + document.location; }); })();
Ajaxを駆使したサービスでのログ解析の一助になればと思う。この程度のコードだと著作権は適用されないと思うので、利用はご自由に。