HEADリクエストを排除してサーバ負荷を軽減させる

HTTPリクエストにはGET、POST以外にHEAD、PUT、DELETEがあります。

TwitterなどでURLをツイートするとHEADリクエストが大量に発生します。
HEADリクエストではHTMLの内容を見ていないので、処理が重いサイトの場合 重い処理の前でレスポンスを返してサーバ負荷を軽減させる方法があります。
処理が軽い場合でもHEADリクエストが多い場合には効果があります。
[参考記事] PHPでTwitterのbotを作る方法 ツイートをする/ツイート一覧を取得する v1.1
[参考記事] TwitterでURL付ツイートをするとアクセスしてくるボットの一覧
[参考記事] ログをリアルタイムに表示させて監視する方法
[参考記事] Apacheで出力されるログを変更する方法
[参考記事] 負荷が高いときには503エラーを返す方法
[参考記事] PHPでロードアベレージを表示させる方法

処理の先頭に次のように書くだけです。

<?php
if($_SERVER["REQUEST_METHOD"] == "HEAD"){
	echo "I'm OK!";
	exit;
}

mod_rewriteを利用して1つのindex.phpを通っている場合には、このファイルの先頭に書いてしまえばいいです。

ただしHEADリクエストは本来レスポンスヘッダーのみを確認してファイル種類や更新日時を見たりするものなので正しいレスポンスではなくなります。
(ほとんどの場合、URLが画像のものかHTMLのものかを判別するためのボットのようです。)

関連記事

スポンサーリンク

各地域、各国に割り振られているIPアドレス

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る