我知道mod-rewrite实现了许多积极的事情。但有没有负面的?显然,如果你的规则写得不好,你就会遇到问题。但是,如果你有一个高容量的网站,并且你不断使用mod-rewrite,它会对性能产生重大影响吗?我在Google上快速搜索了一些基准测试,并没有找到太多。
答案 0 :(得分:37)
我在每月获得数百万次/每月点击量的网站上使用了mod_rewrite而没有任何重大的性能问题。您必须知道根据您的规则首先应用哪些重写。
使用mod_rewrite很可能比使用当前语言解析URL更快。
如果您真的担心性能,请不要使用.htaccess
文件,这些文件很慢。将所有重写规则放在Apache配置中,该配置仅在启动时读取一次。每个请求都会重新解析.htaccess
个文件,以及父文件夹中的每个 .htaccess
文件。
答案 1 :(得分:7)
为了回应Ryan上面所说的内容,与在配置文件中包含规则相比,.htaccess
中的规则会在繁忙的网站上真正损害您的加载时间。我们最初尝试过这个(约6000万页/月),但在我们的服务器开始吸烟之前不会持续很长时间:)
在配置中使用规则的明显缺点是,每当修改规则时都必须重新加载配置。
最后一个标志(“L”)对于加快规则的执行非常有用,一旦您更频繁访问的规则排在最前面并进行首先评估。如果你有一套很长的规则,它可以使维护变得更加棘手 - 我在一天早上浪费了几个非常令人沮丧的时间,因为我在我的规则列表中间进行编辑并且有一个在顶部被捕获超过意!
我们也难以找到相关的基准测试,并最终制定了我们自己的内部测试套件。一旦我们对规则进行了整理,正确排序并进入Apache conf,我们就没有发现太大的负面性能影响。
答案 2 :(得分:3)
如果你担心apache的性能,如果你有很多重写规则,要考虑的一件事就是使用“skip”标志。这是一种跳过规则匹配的方法。因此,保存了匹配所花费的任何开销。
但是要小心,我在一个项目中使用了“跳过”标记,这使得维护变得很痛苦,因为它取决于文件中写入内容的顺序。