我知道 mod-rewrite 完成了很多积极的事情。但是有负面的吗?显然,如果你的规则写得不好,你就会遇到问题。但是,如果您有一个大容量站点并且您经常使用 mod-rewrite,它会对性能产生重大影响吗?我在 Google 上快速搜索了一些基准,但没有找到太多。
3 回答
我已经在每月获得数百万/点击次数且没有任何重大性能问题的网站上使用 mod_rewrite。根据您的规则,您必须知道首先应用哪些重写。
使用 mod_rewrite 很可能比使用当前语言解析 URL 更快。
如果您真的担心性能,请不要使用.htaccess
文件,这些文件很慢。将所有重写规则放入 Apache 配置中,该配置仅在启动时读取一次。.htaccess
每次请求都会重新解析文件以及父文件夹中的每个 .htaccess
文件。
为了回应 Ryan 上面所说的,.htaccess
与在配置文件中包含规则相比,a 中的规则确实会损害您在繁忙站点上的加载时间。我们最初尝试过这个(约 6000 万页/月),但没有持续很长时间,直到我们的服务器开始冒烟 :)
在配置中包含规则的明显缺点是,无论何时修改规则,都必须重新加载配置。
最后一个标志(“L”)对于加快规则的执行很有用,一旦您更频繁访问的规则位于顶部并首先进行评估。但是,如果您有一套很长的规则,这会使维护变得更加棘手 - 一天早上,我浪费了几个非常令人沮丧的小时,因为我正在编辑我的规则列表的中途并且在顶部有一个陷阱超过故意的!
We had difficulty finding relevant benchmarks also, and ended up working out our own internal suite of tests. Once we got our rules sorted out, properly ordered and into our Apache conf, we didn't find much of a negative performance impact.
如果您担心 apache 的性能,如果您有很多重写规则,需要考虑的一件事是使用“skip”标志。这是一种跳过规则匹配的方法。因此,节省了用于匹配的任何开销。
不过要小心,我在一个经常使用“skip”标志的项目中,它使维护变得很痛苦,因为它取决于文件中写入的顺序。