htaccessの読み込み時間への影響


15

一般に、Apacheでの処理には2つの可能性があります。

  • htaccessファイルを使用して、フォルダーを1つずつ構成します

  • htaccessに完全に署名し、すべてのルールをhttpd.confに入れる

htaccessの使用は読み込み時間の問題です。知りたいのですが、htaccessの使用は読み込み時間の面でどれくらい高価ですか?テストはありますか?

回答:


22

Apacheプロジェクトからの推奨事項は次のとおりです。

一般に、メインサーバーの構成ファイルにアクセスできない場合にのみ.htaccessファイルを使用する必要があります。... よくある誤解は、ユーザー認証とmod_rewriteディレクティブは.htaccessファイルに入れなければならないということです。

したがってAllowOverride None、メインのhttpd.conf(および/またはサブセクションInclude)でディレクティブと他のすべてのディレクティブの両方を設定してください


Apacheが設定さ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読み取り操作と、通常はファイルシステム属性を更新するためのIO書き込み操作もトリガーしatimeます)、そのロジックを適用する前に解析します。

ディレクティブがmain httpd.confにある場合と異なり、起動時に一度だけ解析するためにApacheを必要とするだけで、各.htaccessファイルはリクエストごとに再度解釈される必要があります。

IO操作に加えて、.htaccessファイルの解析にかかる費用は、その複雑さに依存します。

慎重にベンチマークを決定する必要があります。


4

費用は、特にサーバーのストレージI / Oサブシステムの能力と、キャッシングの有無によって異なります。

それをテストする方法は、.htacessを使用してシステムを構成し、Webサーバーと同じ方法で負荷テストを行うことです。次に、.htaccessなしでシステムを構成し、同じテストを実行します。

結果比較対照あなた構成されたシステムを。


1

あなたの質問に対する単一の正しい答えがあるとは思わない。htaccessのロード時間に影響を与える可能性のある変数は多数あります。

  • サイトフォルダー構造:各フォルダーのすべての.htaccessは、ページが開くたびに読み込まれます。
  • htaccessファイルの長さ:200行と3500行 大きな違いがあります。
  • .htaccess構成:書き換えルールとリダイレクトルールは他のルールよりも重い場合があります(唯一のものではありません)。
  • クライアント側のネットワーク接続は、ロード時間に影響を与える可能性があります。IMO、あなたは複数の場所からそれを試して、参考のように平均時間を取ることができます。
  • ab-Apache HTTPサーバーベンチマークツールが役立ちます

より詳しい情報:


1

.htaccessを使用して、または使用せずにテストしましたが、速度やオーバーヘッドにまったく違いはありませんでした。確かに私は16サイトしか実行しておらず、それは超高速サーバーなので、私の場合、ミリ秒の追跡はほとんど不可能です。何百ものサイトを実行しているサーバーでは、@ Iainがテストして確認したように、オーバーヘッドが顕著になる場合があります。

私は個人的に仮想ホスト用の.confファイルを使用してすべてを実行します。すべてを完全に制御する.htaccessではなく、よりクリーンで、Apacheのメモリに一度ロードされます。ワードプレスの書き換えルールでさえ.confファイルに含まれているため、壊れることはありません。


超高速はどのくらいですか?
ジェームズカークビー

@James Kirkby正確なサーバー仕様を後でオフィスから送信します。Proxmoxコンテナーですべてを実行しています。私のWebサーバーと16のWordPressサイトはすべて、Google Pagespeedで91-96であり、常に微調整と最適化を行っています。
MitchellK

@JamesKirkbyこれは、Ubuntu 14.04、Apache 2.4.7、およびPHP-FPMを実行する2 x 6コアプロセッサと64 GbのRamを備えています。それはちょっとした注目すべきことです。私はそのパフォーマンスに夢中です。
MitchellK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.