最佳的mod_rewrite正则expression式。 匹配模式排列在正则expression式中的方式是不是?

我有以下几点:

RewriteRule ([a-zA-Z0-9]{5})?/load_page/([0-9]+) 

正则expression式的哪个configuration是最优的:

 RewriteRule ^/([a-zA-Z0-9]{5})?/load_page/([0-9]+) 

要么

 RewriteRule ^/load_page/([a-zA-Z0-9]{5})?/([0-9]+) 

要么

 RewriteRule ^/([a-zA-Z0-9]{5})?/([0-9]+)/load_page 

谢谢

我不认为你的情况有明显的不同。

想要确定吗? 使用Apache Benchmark,Siege,JMeter或任何您想要使用或熟悉的基准testing工具进行基准testing。

Janne可能是正确的,差异是微不足道的,你不应该优化没有基准。

无论如何要回答这个问题,它应该取决于请求的URL。 我猜想大多数请求的URL没有以/load_page开头的path。 在这种情况下,以^/load_page开头的正则expression式可能会稍微快一点,因为它可以通过比较前几个字符并不需要回溯来快速排除许多不匹配的string。 所以如果你要求/foo ,它会把fl比较,在比较一个或两个字符后看到不匹配和保释。

与其他正则expression式,它会看到/foo并认为“我看到一些罚款字母数字”,只有在意识到其余的正则expression式不匹配后才中止。