Impacto do tempo de carregamento do htaccess

15

Existem, em geral, duas possibilidades de lidar com coisas no Apache:

  • faça configurações para pastas, uma a uma, usando o arquivo htaccess

  • para renunciar totalmente ao htaccess e colocar todas as regras no httpd.conf

O uso do htaccess é um problema de tempo de carregamento. Eu quero saber, quão caro em termos de tempo de carregamento é o uso de htaccess? Há algum teste?

    
por Evgeniy 02.06.2016 / 09:38

4 respostas

22

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.

    
por 02.06.2016 / 13:54
4

A despesa depende de quão poderoso o servidor é, em particular, é o subsistema de E / S de armazenamento e se há algum cache envolvido.

A maneira de testar é configurar seu sistema com .htacess e teste de carga da mesma maneira que você faria com qualquer servidor web. Em seguida, configure o sistema sem o .htaccess e execute os mesmos testes.

Compare e contraste os resultados para os seus sistemas configurados.

    
por 02.06.2016 / 09:49
1

Não acredito que exista uma única resposta certa para a sua pergunta. São muitas variáveis que podem afetar o tempo de carregamento do htaccess:

  • Estrutura de pastas do site: todas as .htaccess em cada pasta são carregadas toda vez que a página é aberta.
  • Quanto tempo dura o arquivo htaccess: 200 linhas versus 3500 linhas? há uma grande diferença.
  • configuração .htaccess: reescreva e redirecione as regras pode ser mais pesado do que outros (e não são os únicos).
  • A conexão de rede no lado do cliente pode afetar o tempo de carregamento. IMO, você pode experimentá-lo em mais de um lugar e tomar o tempo médio como uma referência.
  • ab - ferramenta de benchmarking do servidor HTTP Apache pode ajudá-lo

mais informações:

por 02.06.2016 / 10:03
1

Eu testei com e sem o .htaccess e realmente não encontrei diferença na velocidade ou na sobrecarga. Concedido eu só executar 16 sites e é um servidor super rápido, no meu caso, o rastreamento de milissegundos é quase impossível. Em um servidor rodando centenas de sites, a sobrecarga pode ser perceptível, assim como @Iain disse teste e veja.

Eu pessoalmente faço tudo usando o arquivo .conf para um host virtual e não o .htaccess que me dá controle absoluto sobre tudo, é mais limpo e é carregado uma vez na memória do apache. Mesmo as minhas regras de reescrita de wordpress estão nos meus arquivos .conf, por isso nunca podem ser quebrados.

    
por 02.06.2016 / 10:04