質問

mod-rewrite によって達成される良いことがたくさんあることはわかっています。しかし、否定的なことはありますか?ルールが不十分に記述されていると、問題が発生するのは明らかです。しかし、大規模なサイトがあり、常に mod-rewrite を使用している場合、パフォーマンスに重大な影響を与えるでしょうか?Google でいくつかのベンチマークを簡単に検索しましたが、あまり見つかりませんでした。

役に立ちましたか?

解決

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

mod_rewrite を使用すると、現在の言語で URL を解析するよりも高速になる可能性があります。

パフォーマンスを本当に心配する場合は使用しないでください .htaccess ファイルは遅いです。すべての書き換えルールを Apache 構成に入れます。これは起動時に 1 回だけ読み取られます。 .htaccess ファイルはリクエストごとに再解析されます。 .htaccess 親フォルダー内のファイル。

他のヒント

ライアンが上で言ったことを繰り返すと、次のようなルールになります。 .htaccess 構成ファイルにルールを含める場合と比較して、混雑したサイトでは読み込み時間が大幅に短縮される可能性があります。私たちは最初これを試しました (約 6,000 万ページ/月) が、サーバーが煙を出し始めるまであまり長くは続きませんでした:)

設定にルールを含めることの明らかな欠点は、ルールを変更するたびに設定を再ロードする必要があることです。

最後のフラグ (「L」) は、頻繁にアクセスされるルールが先頭にあり、最初に評価されると、ルールの実行を高速化するのに役立ちます。ただし、ルールのセットが長い場合は、メンテナンスがはるかに難しくなる可能性があります。ある朝、ルールのリストの途中で編集していて、一番上にあるルールがより多くのトラップを引き起こしていたので、非常にイライラする数時間を無駄にしました。意図されました!

関連するベンチマークを見つけるのも困難で、最終的には独自の社内テストスイートを作成することになりました。ルールを整理し、適切に順序付けして Apache conf に組み込むと、パフォーマンスへの悪影響はほとんど見つかりませんでした。

Apache のパフォーマンスが心配な場合、多数の書き換えルールがある場合に考慮すべきことの 1 つは、「スキップ」フラグを使用することです。これは、ルールのマッチングをスキップする方法です。したがって、マッチングに費やされるオーバーヘッドはすべて節約されます。

ただし、注意してください。私は「スキップ」フラグを多用するプロジェクトに参加していましたが、ファイルに書き込まれる順序に依存するため、メンテナンスが面倒になりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top