A recomendação do projeto Apache é:
In general, you should only use .htaccess files when you don't have access to the main server configuration file. ... a common misconception is that user authentication and mod_rewrite directives must go in
.htaccess
files.
Então, por favor, defina AllowOverride None
e todas as suas outras diretivas no httpd.conf principal (e / ou nas subseções Include
)
Quando o Apache não está configurado com AllowOverride None
você já sofre uma penalidade (menor) no desempenho, independentemente de haver ou não arquivos .htaccess
usados.
Isso porque para cada solicitação o apache precisará verificar a presença de um possível arquivo .htaccess
em cada (sub) diretório que leva até o recurso solicitado. Por exemplo, quando um arquivo é solicitado fora de um diretório / www / htdocs / example, o apache deve procurar os seguintes arquivos:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
E, para cada acesso de arquivo fora desse diretório, há 4 acessos adicionais ao sistema de arquivos, mesmo que nenhum desses arquivos esteja presente. (Se AllowOveride estiver definido para /)
A chamada de sistema usada para isso ( man 2 stat
) por si só não é tão cara e tipicamente O cache do sistema de arquivos é usado em vez de pesquisar o disco real, limitando os requisitos reais de IO, mas ainda assim pode adicionar, como este artigo argumenta.
Quando um ou mais arquivos .htaccess
reais estão realmente presentes, o apache ainda precisa open
e leia ele (acionando outra operação de IO read e geralmente também uma operação IO write para atualizar o sistema de arquivos atime
attribute) e parse antes que a lógica nele possa ser aplicado.
Ao contrário de quando suas diretivas estão no principal httpd.conf
, que precisa apenas do apache para analisá-las uma vez, na inicialização, cada arquivo .htaccess
precisa ser interpretado novamente para cada solicitação.
Quão caro, além das operações de IO, analisar os arquivos .htaccess depende da complexidade deles.
Isso levará um benchmarking cuidadoso para determinar.