通常有两种处理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的加载时间:
更多信息:
我已经testing过,没有.htaccess,真的可以find任何速度或开销没有任何区别。 当然,我只运行16个网站,这是一个超快速的服务器,所以在我的情况下跟踪毫秒几乎是不可能的。 在运行数百个站点的服务器上,开销可能是显而易见的,因此@Iain表示testing并查看。
我个人使用的.conf文件为虚拟主机,而不是.htaccess它使我绝对控制一切,它更干净,它一次加载到Apache的内存。 即使我的wordpress重写规则是在我的.conf文件,所以它永远不会中断。