Impacto no tempo de carga do htaccess

15

Em geral, existem duas possibilidades de lidar com coisas no Apache:

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

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

O uso do htaccess é um problema de tempo de carregamento. Quero saber quanto custa em termos de tempo de carregamento o uso do htaccess? Existem testes?

Evgeniy
fonte

Respostas:

22

A recomendação do projeto Apache é:

Em geral, você só deve usar arquivos .htaccess quando não tiver acesso ao arquivo de configuração do servidor principal. ... um equívoco comum é que as diretivas de autenticação do usuário e mod_rewrite devem estar nos .htaccessarquivos.

Portanto, defina AllowOverride Nonee todas as suas outras diretivas no httpd.conf principal (e / ou nas subseções que você Include)


Quando o Apache não está configurado com AllowOverride Nonevocê, já ocorre uma penalidade (menor) no desempenho, independentemente de qualquer .htaccessarquivo ser usado ou não .

Isso porque, para cada solicitação, o apache precisará verificar a presença de um .htaccessarquivo em potencial em todos os (sub-) diretórios que levam ao 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 assim, para cada acesso de arquivo fora desse diretório, existem 4 acessos adicionais ao sistema de arquivos, mesmo que nenhum desses arquivos esteja presente. (Se AllowOveride estiver definido para /)

A chamada do sistema usada para isso ( man 2 stat) por si só não é tão cara e, geralmente, o cache do sistema de arquivos é usado em vez de pesquisar o disco real, limitando os requisitos reais de E / S, mas ainda assim pode ser acrescentado, como este artigo argumenta.


Quando um ou mais .htaccessarquivos reais estão realmente presentes, o apache ainda precisa openlê- lo (disparando outra operação de leitura de E / S e, geralmente, também uma operação de gravação de E / S para atualizar o atimeatributo do sistema de arquivos ) e analisá- lo antes que a lógica nele possa ser aplicada.

Diferentemente de quando suas diretivas estão em destaque httpd.conf, que só precisa do apache para analisá-las uma vez, na inicialização, cada .htaccessarquivo precisa ser interpretado novamente para cada solicitação.

O quão caro, além das operações de E / S, a análise dos arquivos .htaccess é depende de sua complexidade.

Isso exigirá benchmarking cuidadoso para determinar.

HBruijn
fonte
4

A despesa depende da potência do servidor, em particular, do subsistema de E / S de armazenamento e da existência de algum cache.

A maneira de testá-lo é configurar seu sistema com .htacess e carregá- lo da mesma maneira que faria com qualquer servidor da web. Em seguida, configure o sistema sem .htaccess e execute os mesmos testes.

Compare e contraste os resultados para seus sistemas configurados.

user9517
fonte
1

Não acredito que haja uma única resposta certa para sua pergunta. Muitas variáveis ​​podem afetar o tempo de carregamento do htaccess:

  • Estrutura de pastas do site: todos os .htaccess em cada pasta são carregados toda vez que a página é aberta.
  • Quanto tempo dura o arquivo htaccess: 200 linhas vs 3500 linhas? Há uma grande diferença.
  • Configuração .htaccess: reescrever e redirecionar regras podem ser mais pesadas que outras (e não são as únicas).
  • A conexão de rede no lado do cliente pode afetar o tempo de carregamento. Na IMO, você pode experimentá-lo em mais de um local e levar o tempo médio como uma referência.
  • ab - A ferramenta de benchmarking do servidor HTTP Apache pode ajudá-lo

mais informações:

HEDMON
fonte
1

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

Pessoalmente, faço tudo usando o arquivo .conf para um host virtual e não o .htaccess, ele me dá controle absoluto sobre tudo, é mais limpo e é carregado uma vez na memória do apache. Até as minhas regras de reescrita do wordpress estão nos meus arquivos .conf, para que nunca quebre.

MitchellK
fonte
quão rápido é super rápido?
James Kirkby
@ James Kirkby Vou enviar as especificações exatas do servidor mais tarde, fora do escritório agora. Estou executando tudo em contêineres Proxmox. Meu servidor da Web e meus 16 sites WordPress têm 91-96 no Google Pagespeed e eu sempre estou aprimorando e otimizando.
MitchellK
@JamesKirkby Possui 2 x 6 processadores principais e 64 Gb de RAM com o Ubuntu 14.04, Apache 2.4.7 e PHP-FPM. É uma pequena besteira, estou em êxtase com o desempenho.
MitchellK