MTのキャプチャ認証の負荷を軽減する方法

先日、このブログのサーバー負荷が増大して、表示できないことがある状態になったのでMTのキャプチャ認証に対して負荷を軽減を行いました。

MTは通常、静的にHTMLを書き出している為、表示に対する負荷はそれほど掛かりませんが、静的ページで読み込んでいるキャプチャ認証の画像に関してはcgiで書き出されている為、表示のたびにcgiが実行されています。

MTの4.2のマイナーバージョン(細かいバージョンは忘れましたが)では、デフォルトテンプレートではコメント欄にフォーカスがあった場合にキャプチャ認証の画像を表示するように改善されていますが、それ以前のバージョンのテンプレートを利用している場合や、独自のテンプレートで運用している場合には独自に実装しなくてはなりません。

変更前

<dt><label for="comment-text">コメント:</label></dt>
<dd><textarea id="comment-text" name="text" rows="10" cols="30"></textarea></dd>
<dt><label for="comment-Captcha">認証:</label></dt>
<dd id="captcha"><$MTCaptchaFields$></dd>

これを次のように変更

変更後

<dt><label for="comment-text">コメント:</label></dt>
<dd>
<script type="text/javascript">
var captcha_html='<$MTCaptchaFields$>';
</script>
<textarea id="comment-text" name="text" rows="10" cols="30" onfocus="document.getElementById('captcha').innerHTML=captcha_html"></textarea>
</dd>
<dt><label for="comment-Captcha">認証:</label></dt>
<dd id="captcha"></dd>

これでコメント投稿時にのみキャプチャ認証が表示さえるようになりますのでサーバー負荷を大幅に軽減することが出来ました。

関連エントリー

Movable Typeの再構築 高速化いろいろ
MTとトラックバック
MTでopモディファイアを利用して複雑なレイアウトを行う
MTで検索結果(タグページ)の表示件数を変更する。
MT4.24 からパスワードの再設定が簡単に!

スポンサードリンク

«Web制作の現場で使う jQueryデザイン入門 | メイン | jQuery基礎文法最速マスター»