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キーを使い分けたりなど、何かに使えるかもしれない。