- 締切済み
クライアントの接続速度で自動分岐させるスクリプトを・・・
こんにちは 約1年ぶりくらいに質問させていただきます。 訪問者の接続速度によって自動的にそれぞれのページへ分岐させたいのですが、どういう方法が考えられるでしょうか? よく、「ブロードバンド速度測定」などで使われているモノはjavascriptなのでしょうか? それともCGIなのでしょうか? 皆様、ご多忙中とは存じますが御教授お願い申し上げます。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nta
- ベストアンサー率78% (1525/1942)
回答No.1
回線速度を測定するCGIを呼び出してもらい、その結果をCookieで相手のブラウザに保存してもらいます。 その後で目的のページに自動的にジャンプしてそこで先ほど書き込んだCookieを読み出して分岐するというのはいかがでしょう。毎回CGIを呼び出すというのも訪問者に負担をかけすぎますから。
お礼
スクリプトの【if】文を下記のとおりに変更したら うまく行きました。 ------------------------------------ if (sp >= 250) { setTimeout('location.href = "./bb/index.htm"',10000); } else { setTimeout('location.href = "./nb/index.htm"',3000); } ----------------------------------- ただ、キャッシュを読み込ませないようにするために メタタグで <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> と入れてるにもかかわらず、キャッシュされてしまいます。 何故でしょうね????
補足
回答アリガトウ御座います スクリプトで、速度を計測して、自動的に分岐できるようになりました。 ただ、ページを読み込み後に一定時間後にジャンプさせたいのですがうまく行きません。 setTimeoutをつかっても、読み込み途中で実行されてエラーになってしまいます、 --------------------------------- <Script Language="JavaScript"> <!-- myhost = location.host; myDate = new Date(); st = myDate.getTime(); datasize = 137766; // ページと画像の総合計サイズ(単位:バイト) function calcTime() { myDate = new Date(); ed = myDate.getTime(); tm = (ed - st) / 1000; spkb = Math.round(datasize*100 / (tm*1024)); // 速度(100キロバイト/秒) spk = spkb / 100 // 上の整数を100で割る spb = Math.round((datasize*8*100) / (tm*1024)); // 速度(100キロビット/秒) sp = spb / 100 // 上の整数を100で割る dw = ""; dw = dw + "受信時間:"+tm+"秒</BR>"; dw = dw + "回線速度(bit):"+sp+"Kbit/s </BR>"; dw = dw + "回線速度(byte):"+spk+"Kbyte/s </BR>"; document.all.GR.innerHTML=(dw); } function junp(){ if (sp >= 250) { location.href = "./bb/index.htm"; } else { location.href = "./nb/index.htm"; } } onLoad = setTimeout('junp()',5000); // --> </Script> </head> <body onLoad="calcTime()" BGCOLOR="#ffffff" LINK="#0000cc" VLINK="#990099"> ----------------------