Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用Mod Rewrite时有任何负面影响吗?_Performance_Mod Rewrite - Fatal编程技术网

Performance 使用Mod Rewrite时有任何负面影响吗?

Performance 使用Mod Rewrite时有任何负面影响吗?,performance,mod-rewrite,Performance,Mod Rewrite,我知道mod rewrite可以完成很多积极的事情。但是有什么负面影响吗?显然,如果你的规则写得不好,你就会有问题。但是,如果你有一个高容量的站点,并且经常使用mod rewrite,那么它会对性能产生重大影响吗?我在谷歌上快速搜索了一些基准测试,没有找到多少 我曾在每月获得数百万次点击的网站上使用mod_rewrite,但没有任何重大性能问题。您必须知道哪些重写首先应用,这取决于您的规则 使用mod_rewrite很可能比使用当前语言解析URL更快 如果您真的担心性能,请不要使用.htacce

我知道mod rewrite可以完成很多积极的事情。但是有什么负面影响吗?显然,如果你的规则写得不好,你就会有问题。但是,如果你有一个高容量的站点,并且经常使用mod rewrite,那么它会对性能产生重大影响吗?我在谷歌上快速搜索了一些基准测试,没有找到多少

我曾在每月获得数百万次点击的网站上使用mod_rewrite,但没有任何重大性能问题。您必须知道哪些重写首先应用,这取决于您的规则

使用mod_rewrite很可能比使用当前语言解析URL更快


如果您真的担心性能,请不要使用
.htaccess
文件,这些文件速度很慢。将所有重写规则放在Apache配置中,该配置在启动时只读取一次<代码> .HTAccess 文件在每个请求上重新解析,连同<强> >每个< <强> >代码> .HTTAccess 文件在父文件夹中。

< P>如果您担心Apache的性能,如果有很多重写规则,需要考虑的是使用“跳过”标志。这是一种跳过规则匹配的方法。因此,无论在匹配上花费多少开销,都可以节省下来


不过要小心,我在一个经常使用“跳过”标志的项目上,这会让维护变得很痛苦,因为这取决于文件中写入内容的顺序。

为了回应Ryan上面所说的,与配置文件中的规则相比,
.htaccess
中的规则确实会影响您在繁忙站点上的加载时间。我们最初尝试过这一点(每月约6000万页),但并没有持续很长时间,直到我们的服务器开始冒烟:)

在配置中包含规则的明显缺点是,无论何时修改规则,都必须重新加载配置

最后一个标志(“L”)有助于加快规则的执行速度,一旦您更频繁访问的规则位于顶部并首先进行评估。但是,如果你有一套很长的规则,那么它会让维护变得更加棘手——一天早上,我在编辑规则列表的一半时浪费了几个非常令人沮丧的小时,而在顶部有一个规则超出了预期


我们也很难找到相关的基准,并最终制定出自己的内部测试套件。一旦我们把规则整理好,正确排序并放入Apache配置中,我们就没有发现太多的负面性能影响。

回答得好,但我应该指出,启用.htaccess文件是问题所在,而不是太多地使用它们。如果不完全禁用它们,即使没有一个.htaccess文件,每个路径段的状态仍然会命中。使用
AllowOverride None
@NateS禁用.htaccess将禁用重写引擎,而不是.htaccess文件读取。@jeferod83 With
AllowOverride
“设置为无,AllowOverrideList设置为无,.htaccess文件被完全忽略。在这种情况下,服务器甚至不会尝试读取文件系统中的.htaccess文件。”您可以在Apache配置中执行此操作。在某些情况下,最好使用[L]标志(指示如果当前规则匹配,则应跳过以下所有规则),如果要阻止子目录/新本地化中的.htaccess,则使用“否”和“结束”标志