我正在尝试优化我的.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)每秒处理大约 100 个请求,而其下面的另外两个重写规则每小时仅处理几个请求。
我的问题是,由于第一个重写规则(bigbadbot)处理大约 99% 的流量,将这些规则放入两个单独的规则集中是否更好?
例如:
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
它基本上不会有性能差异,因为一旦一个 Cond 在 OR 块中匹配,其余的就不会被处理(没有意义)。从技术上讲,首先会根据 OR 块进行一些处理,所以我认为将其分开会稍微更有效率。
如果您遇到性能问题,我会将精力集中在其他地方。也许分析您正在服务的任何应用程序。此外,如果它是托管的,主机可能在同一台服务器上有太多网站。