.htaccess正则expression式的最佳性能?

在我的.htaccess文件中,我试图阻止一些机器人使用:

RewriteCond%{HTTP_USER_AGENT} ^ badbot [NC]

但是,我想把这些条件改变成更具包容性的东西,比如:

方法1:RewriteCond%{HTTP_USER_AGENT}。* badbot [NC,OR]

要么

方法2:RewriteCond%{HTTP_USER_AGENT} ^。* badbot [NC,OR]

要么

方法#3:RewriteCond%{HTTP_USER_AGENT} badbot [NC,OR]

问题是,这三种方法中的哪一种最适合服务器性能?

谢谢!

据我所知,这些之间几乎没有性能差异。 从逻辑上讲,/.*badbot/和/ badbot /应该是等价的,并且正则expression式从左到右被parsing,我也会认为^没有任何区别。

我用Perl(这可能会使用一个稍微不同的正则expression式引擎mod_rewrite)testing这些,它显示/ badbot /比其他更快,但这可能是我所使用的string。 另外,请记住,USER_AGENT的最大长度为200,这可能是不必要的优化。 将这些放在httpd.conf而不是.htaccess中可以获得更多的优化。

我从testing中得到的结果是:
[james@aladdin ~]$ time perl -e 'my $x = "bad" x 99999999; $x .= "badbot"; print "true" if $x =~ /^.*badbot/;'
true
real 0m2.575s
user 0m1.847s
sys 0m0.712s
[james@aladdin ~]$ time perl -e 'my $x = "bad" x 99999999; $x .= "badbot"; print "true" if $x =~ /badbot/;'
true
real 0m2.110s
user 0m1.378s
sys 0m0.691s
[james@aladdin ~]$ time perl -e 'my $x = "bad" x 99999999; $x .= "badbot"; print "true" if $x =~ /.*badbot/;'
true
real 0m2.522s
user 0m1.866s
sys 0m0.647s

如果您寻找最佳性能…首先有Apache忽略/跳过寻找.ht文件..禁用.htaccess ..:D

 AllowOverride None 

并把你的东西/重写/等直接在每个虚拟主机..

然后select1,2或3:D

那么你已经迈出了“更快”的一步,

希望这有助于..:D