mod-rewrite が達成する多くのポジティブなことがあることを私は知っています。しかし、マイナスはありますか?ルールが適切に記述されていない場合、問題が発生することは明らかです。しかし、大量のサイトがあり、常に mod-rewrite を使用している場合、パフォーマンスに重大な影響があるでしょうか? Google でいくつかのベンチマークを簡単に検索しましたが、あまり見つかりませんでした。
3 に答える
私は mod_rewrite をサイトで使用しましたが、パフォーマンスに重大な問題はなく、1 か月あたり数百万件のヒットがありました。ルールに応じて、どの書き換えが最初に適用されるかを知る必要があります。
mod_rewrite を使用すると、現在の言語で URL を解析するよりも高速になる可能性が高くなります。
パフォーマンスが本当に心配な場合は、.htaccess
ファイルを使用しないでください。ファイルは遅いです。すべての書き換えルールを Apache 構成に入れます。これは、起動時に一度だけ読み取られます。ファイルは、親フォルダー内のすべてのファイルとともに.htaccess
、リクエストごとに再解析されます。 .htaccess
Ryan が上で言ったことを反映するように、構成.htaccess
ファイルにルールがある場合と比較して、a のルールは混雑したサイトでの読み込み時間を大幅に悪化させる可能性があります。私たちは最初にこれを試しました (~6000 万ページ/月) が、私たちのサーバーが喫煙を開始するまで、それほど長くは続きませんでした :)
構成にルールを含めることの明らかな欠点は、ルールを変更するたびに構成をリロードする必要があることです。
最後のフラグ (「L」) は、より頻繁にアクセスされるルールが一番上にあり、最初に評価されると、ルールの実行を高速化するのに役立ちます。ただし、ルールのセットが長い場合は、メンテナンスがはるかに面倒になる可能性があります。ある朝、ルールのリストの途中で編集していて、ルールよりも多くのトラップがあったルールが一番上にあったため、非常にイライラする時間を無駄にしました。意図されました!
関連するベンチマークを見つけるのにも苦労し、最終的に独自の内部テスト スイートを作成することになりました。ルールを整理し、適切に並べ替えて Apache conf に入れると、パフォーマンスへの悪影響はほとんど見つかりませんでした。
If you're worried about apache's performance, one thing to consider if you have a lot of rewrite rules is to use the "skip" flag. It is a way to skip matching on rules. So, whatever overhead would have been spent on matching is saved.
Be careful though, I was on a project which utilized the "skip" flag a lot, and it made maintenance painful, since it depends on the order in which things are written in the file.