加载时间对htaccess的影响

通常有两种处理Apache的东西的可能性:

  • 使用htaccess文件逐个configuration文件夹

  • 完全退出htaccess并把所有的规则放到httpd.conf

使用htaccess是一个加载时间问题。 我想知道,在加载时间方面是多么昂贵的是htaccess的使用? 有没有testing?

Apache项目的build议是:

一般来说,只有当您无法访问主服务器configuration文件时,才应该使用.htaccess文件。 … 一个常见的误解是用户身份validation和mod_rewrite指令必须在.htaccess文件中。

所以请同时在主要的httpd.conf(和/或你Include的小节)中设置AllowOverride None和你所有的其他指令。


当Apache 没有configuration AllowOverride None时,无论是否使用任何.htaccess文件,您都已经发生(较小的)性能损失。

这是因为对于每个请求, apache都需要检查每个(子)目录中潜在的.htaccess文件的存在,这个目录通向请求的资源。 例如,当从/ www / htdocs / example目录中请求文件时,apache必须查找以下文件:

 /.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/example/.htaccess 

所以,对于每个从该目录中访问的文件,即使没有这些文件存在,也有4个附加的文件系统访问。 (如果AllowOveride被设置为/)

用于( man 2 stat )的系统调用本身并不昂贵,通常使用文件系统caching而不是轮询实际的磁盘,限制了实际的IO需求,但仍然可以加起来,因为这篇文章认为。


当一个或多个实际的.htaccess文件实际存在时,apache仍然需要open并读取它(触发另一个IO读取操作,通常还有一个IO写入操作来更新文件系统atime属性),并在其中的逻辑被应用之前parsing它。

不同于当你的指令在主要的httpd.conf ,在启动时只需要apacheparsing它们,每个.htaccess文件需要被再次解释为每一个请求。

除IO操作之外,parsing.htaccess文件还有多昂贵取决于它们的复杂性。

这将需要仔细的基准来确定。

费用取决于服务器的强大程度,特别是存储I / O子系统以及是否存在任何caching。

testing它的方法是使用.htacessconfiguration您的系统,并以与任何Web服务器相同的方式加载testing 。 然后configuration系统没有.htaccess并运行相同的testing。

比较和对比configuration的系统的结果。

我不相信你的问题有一个正确的答案。 有很多variables可以影响htaccess的加载时间:

  • 站点文件夹结构:每次打开页面时,每个文件夹中的所有.htaccess都会加载。
  • htaccess文件有多长时间:200行vs 3500行? 有一个很大的区别。
  • .htaccessconfiguration:重写和redirect规则可能比其他更重(并不是唯一的)。
  • 客户端的networking连接会影响加载时间。 国际海事组织,你可以尝试从多个地方,平均时间像一个参考。
  • ab – Apache HTTP服务器基准testing工具可以帮助您

更多信息:

我已经testing过,没有.htaccess,真的可以find任何速度或开销没有任何区别。 当然,我只运行16个网站,这是一个超快速的服务器,所以在我的情况下跟踪毫秒几乎是不可能的。 在运行数百个站点的服务器上,开销可能是显而易见的,因此@Iain表示testing并查看。

我个人使用的.conf文件为虚拟主机,而不是.htaccess它使我绝对控制一切,它更干净,它一次加载到Apache的内存。 即使我的wordpress重写规则是在我的.conf文件,所以它永远不会中断。