JavaScript random を使って2回に1回など実行回数を制限したり、処理を分散する

更新:

JavaScript の random を使って処理を2回に1回や3回に1回など毎回実行しないようにする。

処理分散

アクセス解析を毎回実行するとサーバーに負荷がかかるから、2回に1回だけ実行するように以下のようなコードを書いた。

var now_ms = new Date().getTime();
console.log(now_ms);

if((now_ms % 2) == 0){
    console.log('一致');
}else{
    console.log('不一致');
}

現在の日時のミリ秒が2で割り切れる場合(偶数)は処理し、そうでない場合(奇数)は何もしない。 概ね2回に1回実行されるようになる。

ただ、3回に1回、4回に1回など処理したい場合は都合が悪い。 そこで random() を使う。

var count = 3;//1で毎回、2で2回に1回、3で3回に1回
var num = Math.floor(Math.random() * count);
console.log(num);

if(num == 0){
    console.log('一致');
}else{
    console.log('不一致');
}

あくまで回数はだいたいなので偏りはあるが、実行回数が多ければ偏りはあまり気にならない。

また、処理するか否かだけでなく、ランダムな数値に応じて処理するものを変えることもできる。

var count = 3;
var num = Math.floor(Math.random() * count);

switch(num){
    case 0:
        console.log('処理0');
        break;
    case 1:
        console.log('処理1');
        break;
    case 2:
        console.log('処理2');
        break;
}

jQuery(ajax)を実行する際、複数のレンタルサーバーを使って負荷を分散させたり、複数のAPIキーを使い分けたりなど、何かに使えるかもしれない。

このエントリーをはてなブックマークに追加