Impatto sul tempo di caricamento di htaccess


15

Esistono in genere due possibilità di gestire le cose su Apache:

  • configurare le cartelle una per una usando il file htaccess

  • per dimettersi completamente da htaccess e inserire tutte le regole in httpd.conf

L'uso di htaccess è un problema relativo al tempo di caricamento. Voglio sapere quanto costa in termini di tempo di caricamento l'utilizzo di htaccess? Ci sono dei test?

Risposte:


22

La raccomandazione del progetto Apache è:

In generale, è necessario utilizzare i file .htaccess solo quando non si ha accesso al file di configurazione del server principale. ... un malinteso comune è che l'autenticazione dell'utente e le direttive mod_rewrite debbano andare nei .htaccessfile.

Quindi, per favore, sia impostare sia AllowOverride Nonetutte le altre direttive nel httpd.conf principale (e / o nelle sottosezioni Include)


Quando Apache non è configurato con AllowOverride Nonete, si verifica già una penalità di prestazione (minore), indipendentemente dal fatto che .htaccessvengano utilizzati o meno file.

Questo perché per ogni richiesta Apache dovrà verificare la presenza di un potenziale .htaccessfile in ogni (sotto-) directory che porta alla risorsa richiesta. Ad esempio, quando un file viene richiesto da una directory / www / htdocs / example, apache deve cercare i seguenti file:

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

Quindi, per ogni accesso ai file da quella directory, ci sono 4 accessi al file system aggiuntivi, anche se nessuno di questi file è presente. (Se AllowOveride è impostato su /)

La chiamata di sistema utilizzata per quello ( man 2 stat) da sola non è così costosa e in genere viene utilizzata la cache del file system piuttosto che eseguire il polling del disco effettivo, limitando gli effettivi requisiti di I / O, ma può ancora sommarsi, come sostiene questo articolo .


Quando uno o più .htaccessfile effettivi sono effettivamente presenti, Apache deve ancora opene leggerlo (attivando un'altra operazione di lettura IO e di solito anche un'operazione di scrittura IO per aggiornare l' atimeattributo del filesystem ) e analizzarlo prima che la logica in esso presente possa essere applicata.

A differenza di quando le direttive sono in linea di massima httpd.conf, il che richiede solo apache per analizzarle una volta, all'avvio, ogni .htaccessfile deve essere interpretato di nuovo per ogni singola richiesta.

Quanto è costoso, oltre alle operazioni IO, analizzare i file .htaccess dipende dalla loro complessità.

Ciò richiederà un'attenta valutazione comparativa per determinare.


4

Le spese dipendono dalla potenza del server, in particolare dal sottosistema I / O di archiviazione e dalla presenza di cache.

Il modo per testarlo è configurare il tuo sistema con .htacess e caricarlo testandolo come faresti con qualsiasi web server. Quindi configurare il sistema senza .htaccess ed eseguire gli stessi test.

Confronta e confronta i risultati per i tuoi sistemi configurati.


1

Non credo che ci sia un'unica risposta giusta per la tua domanda. Esistono molte variabili che possono influire sul tempo di caricamento di htaccess:

  • Struttura delle cartelle del sito: tutti gli .htaccess in ciascuna cartella vengono caricati ogni volta che la pagina viene aperta.
  • Quanto dura il file htaccess: 200 righe contro 3500 righe? c'è una grande differenza.
  • Configurazione .htaccess: riscrivere e reindirizzare le regole può essere più pesante di altre (e non sono le uniche).
  • La connessione di rete sul lato client può influire sul tempo di caricamento. IMO, puoi provarlo da più di un posto e prendere il tempo medio come un riferimento.
  • ab - Lo strumento di benchmarking del server HTTP Apache può aiutarti

Ulteriori informazioni:


1

Ho provato con e senza .htaccess e non sono riuscito a trovare alcuna differenza di velocità o di costi generali. Concesso, gestisco solo 16 siti ed è un server super veloce, quindi nel mio caso il monitoraggio dei millisecondi è quasi impossibile. Su un server che esegue centinaia di siti, l'overhead può essere evidente, come ha detto @Iain e prova.

Personalmente faccio tutto usando il file .conf per un host virtuale e non .htaccess mi dà il controllo assoluto su tutto, è più pulito e viene caricato una volta nella memoria di Apache. Anche le mie regole di riscrittura di wordpress sono nei miei file .conf, quindi non possono mai rompersi.


quanto è veloce?
James Kirkby,

@James Kirkby Ti invierò le specifiche esatte del server più tardi, subito fuori dall'ufficio. Sto eseguendo tutto nei contenitori Proxmox. Il mio server Web e i miei 16 siti WordPress hanno tutti un 91-96 su Google Pagespeed e sono sempre ottimizzato e ottimizzato.
MitchellK,

@JamesKirkby Dispone di 2 x 6 processori core e 64 GB di RAM con Ubuntu 14.04, Apache 2.4.7 e PHP-FPM. È un po 'degno di nota, sono estatico con le sue prestazioni.
MitchellK,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.