2008-08-25 6 views
22

私はモッドリライトが達成する多くの肯定的なことがあることを知っています。しかし、否定的なものはありますか?明らかにあなたが書き方が悪いと、問題が発生するでしょう。しかし、大量のサイトを持ち、常時mod-rewriteを使用している場合、パフォーマンスに重大な影響を及ぼしますか?私はGoogleでいくつかのベンチマークをすばやく検索しましたが、それほど多くは見つかりませんでした。Mod-Rewriteを使用しているときに悪影響がありますか?

答えて

34

重要なパフォーマンスの問題を起こすことなく、月間何百万回もヒットするサイトでmod_rewriteを使用しました。ルールに応じて最初に適用されるリライトを知る必要があります。

mod_rewriteを使用する方が、現在の言語でURLを解析するよりも、おそらく高速です。

実際にパフォーマンスが心配な場合は、.htaccessファイルを使用しないでください。遅いです。すべての書き換えルールをApacheの設定に入れます。これは起動時に一度だけ読み込まれます。 .htaccess親フォルダ内のファイルごとに、すべての要求に対して.htaccessファイルが再解析されます。

+26

丁寧な回答ですが、*有効にする* .htaccessファイルが問題であり、あまり使用しないことを指摘しておきます。それらを完全に無効にしないと、1つの.htaccessファイルをどこにも持っていなくても、すべてのパスセグメントに対してstatヒットが残っています。 –

+3

AllowOverride Noneを使用して.htaccessを無効にします。 – NateS

3

Apacheのパフォーマンスが心配な方は、書き換えルールが多い場合は「スキップ」フラグを使用することを検討してください。これはルールのマッチングをスキップする方法です。だから、どのようなオーバーヘッドがマッチングに費やされたとしても保存されます。

私は "スキップ"フラグを多く利用したプロジェクトに参加していましたが、ファイルに書かれている順序に依存するため、メンテナンスが苦労しました。

+3

状況によっては、[L]フラグ(現在のルールが一致する場合は* all *のルールをスキップする必要があることを示す)を使用する方が良いでしょうか? –

+0

サブディレクトリ/新しいローカライゼーションで.htaccessを防止する場合は、フラグ "END" – 18C

7

上記のRyanの言葉をエコーするには、.htaccessのルールが、設定ファイルにルールを設定するのと比べて、ビジー状態のサイトで実際に負荷時間を傷つける可能性があります。私たちは最初にこれを試しました(月間6000万ページ)が、サーバーが喫煙を開始するまで長くはかかりませんでした:)

あなたの設定にルールがあるという明らかな欠点は、ルール

最後のフラグ( "L")は、より頻繁にアクセスされるルールが最初に評価され、最初に評価されると、ルールの実行をスピードアップするのに便利です。あなたが長いルールセットを持っていれば、メンテナンスをもっと厄介にすることができます。私は、私のルールのリストを途中まで編集していて、意図されました!

関連するベンチマークも見つけられず、独自のテストスイートが完成しました。私たちのルールが適切に整理され、Apacheのconfへと整理されると、私たちはパフォーマンスに大きな影響を与えることはほとんどありませんでした。

関連する問題