ここから本文です

.htaccessに2000行書くとApacheの処理が何秒遅くなるか測ってみた

Web担当者Forum 8/2(火) 11:06配信

今日は技術的な話題です。WebサーバーとしてApacheを使っているときに、「.htaccess」ファイルにたくさん処理を書くと重くなるといわれます。具体的に、どれぐらい遅くなるのでしょうか。試してみました。

.htaccessに2200行ほど書くと1リクエストあたり12ミリ秒の遅延になった

一般的には、こう言われています。

“>>>
.htaccessに処理を書くと、httpd.confに書くのに比べて、Apacheの動作は遅くなる

<<<”

実際に測定してみた結論から言うと、たしかに遅くなるようです。

具体的には、私が行ったテストでは、.htaccessファイルに2200行ほどの設定を書いた場合、同じアクセス制御をhttpd.confに書いた場合と比べて、中央値で1リクエストあたり12ミリ秒ほど遅くなりました。

致命的だとも言えませんが軽視していいとも言えない速度低下ですね。

この時間はムダなので削りたいですが、設定を変更するときの手間を考えると無視したくなる、微妙なラインです(細かい条件などは記事の最後に)。

では、なぜ.htaccessに書く設定が増えるとApacheの動作が重くなるのかを解説しますね。

.htaccessとhttpd.confは何が違うの?

まず、「.htaccess」と「httpd.conf」の違いを理解しましょう。

ApacheなどWebサーバーの動作を変更するには、設定をサーバーに伝えなければいけません。その手段として、主に次の2つがあります。

・根本の設定ファイル「httpd.conf」などで指定する
・ディレクトリごとの設定ファイル「.htaccess」で指定する

※実際にはPHPなどのスクリプト言語から設定を変更できますが、今回は純粋なApacheの動作に関する話題ですので省きます。

みなさんも、.htaccessでリダイレクトなどの指定をしたことがあるのではないでしょうか。

.htaccessとhttpd.confには、次のような違いがあります。

・「httpd.conf」などの設定ファイルはサーバー管理者しか変更できないが、「.htaccess」はコンテンツ管理者が変更できる
・「httpd.conf」はサーバーの起動時に1回読み込まれるだけだが、「.htaccess」はアクセスごとにファイルが読み込まれる

「httpd.conf」で指定したサーバーの設定を、ディレクトリごとに変更するための仕組みが「.htaccess」ですね。ただ、.htaccessはサーバー管理者以外でも内容を変更できるため、サイトのルートディレクトリに置いてサイト全体の挙動を変更するという使われ方も多くあります。

共用レンタルサーバーを使っている場合や、現場の制作会社の人やWeb担当者さんが使うのは、多くの場合.htaccessでしょう。

.htaccessでは、主に次のような設定を行うことが多いようです。

・アクセス制限(特定のIPアドレスやパスワードを知っている人のみにアクセスを制限)
・リダイレクト(別のURLにブラウザを誘導)
・リライト(指定されたURLを内部的に変更して処理)
・HTTPレスポンスヘッダー(Expiresなどのキャッシュ指定やMIMEタイプなどを指定)

1/3ページ

最終更新:8/2(火) 11:06

Web担当者Forum