現在、併設(というかメイン)の別館ブログにはSim Accessというサーバーインストールタイプの逆アクセスランキングツールを導入しています。

フリーウェアながら、著作権表示や作者サイトへのリンクなどの条件がなく、phpインクルードで静的なリンクを貼れたり、自由に改造出来るのが特徴。

小さなプログラムで、導入も簡単なのですが、CGI負荷は結構高め?

補足:私はPHPやCGIは良く解っていない。
SimAccessを利用すると、レンタルサーバの管理画面でCPU使用時間がぐっと増える。
サイトの表示が遅くなる事は殆ど無い。

逆にMobavleTypeのCGIは殆ど動いていない、CPU使用時間に現れないクセに、停止させるとサイト表示がスゲー軽くなる)

と言う事で、少しでもPHPの処理を減らすために色々考え、一番効果のあった(現在取っている措置)ものを紹介。

負荷低減対策:先にJavascriptでアクセスを弾く(笑)

  1. Simaccessのphpはjavascriptで呼び出される
  2. ならば、(Simaccessでも禁止URLの設定は出来るが)javascriptで先に弾いちゃう

という考え。
JavaScriptから呼び出すタイプのPHPやCGIは、先にリファラやUAで弾いちゃえばサーバーに余分なリソースを使わせなくて済みますね。
そのコストはそれぞれの閲覧ユーザーさんが追う訳ですが、表示速度に殆ど影響を与えない、ほんの僅かなモノになります。

function simacc() {
var rref =(document.referrer);
if(
  (rref != "")
&&(rref.indexOf("ime.nu") == -1)
&&(rref.indexOf("mail") == -1)
&&(rref.indexOf("?q=") == -1)
&&(rref.indexOf("url?") == -1)
&&(rref.indexOf("?q=") == -1)
&&(rref.indexOf("ask.com") == -1)
&&(rref.indexOf("baidu") == -1)
&&(rref.indexOf("msn.co") == -1)
&&(rref.indexOf("bing.com") == -1)
&&(rref.indexOf("yahoo") == -1)
&&(rref.indexOf("google") == -1)
&&(rref.indexOf("search") == -1)
&&(rref.indexOf("word") == -1)
&&(rref.indexOf("tv_bok") == -1)
&&(rref.indexOf("boktv.x0.com") == -1)
&&(rref.indexOf("https://freesoft.tvbok.com/") == -1)
&&(rref.indexOf("https://web.tvbok.com/") == -1)
){document.write("<imgsrc=\"http://xxxx.com/xxxx/access.php?ref=" + rref + "\"style=\"width:0;height:0;border:0;\" />");}
};

  ▲こんな感じで、逆アクセスランキング内に表示しない設定のURLは先にJavascriptで弾いちゃう。

ウチのサイトの場合、全アクセスの85%がサイト内の移動と検索エンジン経由のアクセスなので、これだけでPHPへの負荷は85%減る事になる。

効果

この対策を行ってから、

サーバーのCPU使用時間は35%減
サーバーのCPU使用時間35%減
▲対策前は1時間40分~2時間半が当たり前だったけど、今や1時間弱。

Googleウェブマスターツールでのダウンロード時間40~50%減、
Googleウェブマスターツールでのダウンロード時間40%減
▲この効果はビックリ。別の原因もあるかも。

サイトの平均表示速度は5~10%の改善。
サイトの平均表示速度は5~10%の改善
▲こちらは外部広告やブログパーツの影響が大きく、微妙な結果に。
でも2月現在、表中の10月よりアクセス多いです。色んな改善の効果は出てます。

残念なこと

このサイトは共用のレンタルサーバーを借りています。
なので、(経験上)負荷が軽くなると、2~3日で他所のサイトさんに資源を割り当てられ、サイト表示速度などは元に戻る可能性が大きいです。

それでも余裕が出来ることは大きい。
昨年11月から行っているサイトパフォーマンス改善を「もし全く行っていなかったら」、、、単純計算すれば今や転送量7GB/Day、CPU使用時間も4時間を超えるレベル、サイト表示も10秒以上待つレベルになっている筈なので。。。。