一般に、Apacheでの処理には2つの可能性があります。
htaccessファイルを使用してフォルダーの設定を1つずつ作成します
htaccessを完全に辞任し、すべてのルールをhttpd.confに配置する
Htaccessの使用は読み込み時間の問題です。 htaccessの使用は、読み込み時間の点でどれくらいの費用がかかりますか?テストはありますか?
Apacheプロジェクトの recommendation は次のとおりです。
一般に、.htaccessファイルは、メインサーバーの設定ファイルにアクセスできない場合にのみ使用してください。 ... よくある誤解は、ユーザー認証とmod_rewriteディレクティブが
.htaccess
ファイルに含まれる必要があることです。
したがって、両方を設定してください AllowOverride None
とメインhttpd.conf内の他のすべてのディレクティブ(および/またはサブセクション Include
)
Apacheが notconfigured with AllowOverride None
の場合、(マイナーな)パフォーマンスペナルティがすでに発生しています。 .htaccess
ファイルが使用されているかどうかに関係なく.
これは、すべてのリクエストに対してApacheは、リクエストされたリソースに至るすべての(サブ)ディレクトリに.htaccess
ファイルが存在するかどうかを確認する必要があるためです。たとえば、ディレクトリ/ www/htdocs/exampleからファイルが要求された場合、Apacheは次のファイルを探す必要があります。
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
したがって、そのディレクトリからのファイルアクセスごとに、それらのファイルが存在しない場合でも、4つの追加のファイルシステムアクセスがあります。 (AllowOverideが/に設定されている場合)
そのために使用されるシステムコール( man 2 stat
)自体はそれほど高価ではなく、通常、実際のディスクをポーリングするのではなく、ファイルシステムキャッシュが使用され、実際のIO要件ですが、 この記事 が主張するように、それでも合計される可能性があります。
1つ以上の実際の.htaccess
ファイルが実際に存在する場合でも、Apacheはopen
を読み取り、それを読み取る必要があります([別のトリガー] IO read operation and通常 IO write operation to update the filesystem atime
属性)および parse ロジックを適用する前にそれを適用します。
ディレクティブがメインのhttpd.conf
にある場合とは異なり、Apacheが一度だけ構文解析する必要があるのとは異なり、起動時に、各.htaccess
ファイルを要求ごとに再度解釈する必要があります。
IOオペレーションに加えて、.htaccessファイルの解析は、その複雑さに応じてどれほどコストがかかりますか。
それは決定するために注意深いベンチマークを取る必要があります。
費用は、サーバーが特に強力なストレージI/Oサブシステムであるかどうか、およびキャッシュが含まれているかどうかによって異なります。
それをテストする方法は、.htacessおよび load test を使用してシステムを構成することであり、他のWebサーバーと同じ方法で行います。次に、.htaccessなしでシステムを構成し、同じテストを実行します。
your構成済みシステムの結果を比較および対比します。
私はあなたの質問に対して単一の正しい答えがあるとは信じていません。 htaccessの読み込み時間に影響を与える可能性のある変数はたくさんあります:
より詳しい情報:
私は.htaccessを使用して、または使用せずにテストしましたが、速度やオーバーヘッドにまったく違いはありませんでした。確かに16のサイトしか実行しておらず、超高速サーバーなので、私の場合、ミリ秒単位の追跡はほとんど不可能です。何百ものサイトを実行しているサーバーでは、@ Iainがテストして確認したように、オーバーヘッドが顕著になる場合があります。
私は個人的に、仮想ホスト用の.confファイルを使用してすべてを実行します。htaccessではなく、すべてを完全に制御します。クリーンで、Apacheのメモリに1回ロードされます。私のwordpress書き換えルールも私の.confファイルにあるので、決して壊れることはありません。