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