
パフォーマンスの問題を回避するために、.htaccess ファイルを最適化しようとしています。
私の .htaccess ファイルには次のような内容があります:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bigbadbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot2 [NC]
RewriteRule ^.* - [F,L]
最初の書き換えルール (bigbadbot) は 1 秒あたり約 100 件のリクエストを処理しますが、その下の他の 2 つの書き換えルールは 1 時間あたり数件のリクエストしか処理しません。
私の質問は、最初の書き換えルール (bigbadbot) がトラフィックの約 99% を処理するので、これらのルールを 2 つの別々のルールセットに配置したほうがよいかどうかです。
例えば:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bigbadbot [NC]
RewriteRule ^.* - [F,L]
RewriteCond %{HTTP_USER_AGENT} otherbot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot2 [NC]
RewriteRule ^.* - [F,L]
パフォーマンスの面では何が優れているでしょうか? これをベンチマークした人はいますか?
答え1
OR ブロックで 1 つの Cond が一致すると、残りは処理されないため (意味がありません)、基本的にパフォーマンスの違いはありません。技術的には、そもそも OR ブロックのために少し処理が行われるので、それを分離すると少しだけ効率的になると思います。
パフォーマンスの問題がある場合は、他のことに集中して取り組むことをお勧めします。おそらく、提供しているアプリケーションのプロファイリングです。また、ホストされている場合は、ホストが同じサーバー上に Web サイトを多数持っているだけかもしれません。