Impatto sul tempo di caricamento di htaccess
Ci sono in generale due possibilità di gestire cose su Apache:
fare le configurazioni per le cartelle una per una usando il file htaccess
per dimettersi completamente da htaccess e inserire tutte le regole in httpd.conf
L'utilizzo di htaccess è un problema di tempo di caricamento. Voglio sapere quanto è costoso in termini di tempo di caricamento l'utilizzo di htaccess? Ci sono dei test?
Risposte
La raccomandazione del progetto Apache è:
In generale, dovresti usare solo file .htaccess quando non hai 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 imposta AllowOverride Nonee tutte le altre direttive nel principale httpd.conf (e / o nelle sottosezioni tu Include)
Quando Apache non è configurato con AllowOverride Nonete, si verifica già una (minore) riduzione delle prestazioni, 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 conduce alla risorsa richiesta. Ad esempio, quando viene richiesto un file da una directory / www / htdocs / example, apache deve cercare i seguenti file:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
E così, per ogni accesso ai file da quella directory, ci sono 4 accessi aggiuntivi al file system, anche se nessuno di quei file è presente. (Se AllowOveride è impostato per /)
La chiamata di sistema utilizzata per that ( man 2 stat) di per sé non è così costosa e in genere viene utilizzata la cache del file system piuttosto che eseguire il polling del disco effettivo, limitando i requisiti di I / O effettivi, ma può comunque sommarsi, come sostiene questo articolo .
Quando uno o più .htaccessfile effettivi sono effettivamente presenti, apache ha ancora bisogno di openleggerlo (attivando un'altra operazione di lettura IO e solitamente anche un'operazione di scrittura IO per aggiornare l' atimeattributo del filesystem ) e analizzarlo prima che la logica in esso possa essere applicata.
A differenza di quando le tue direttive sono nella main httpd.conf, che necessita solo di apache per analizzarle una volta, all'avvio, ogni .htaccessfile deve essere interpretato di nuovo per ogni richiesta.
Quanto è costoso, oltre alle operazioni di I / O, analizzare i file .htaccess dipende dalla loro complessità.
Ciò richiederà un'attenta analisi comparativa per determinarlo.
La spesa dipende dalla potenza del server, in particolare dal sottosistema di I / O di archiviazione e dall'eventuale presenza di cache.
Il modo per testarlo è configurare il tuo sistema con .htacess e caricarlo come faresti con qualsiasi server web. Quindi configura il sistema senza .htaccess ed esegui gli stessi test.
Confronta e confronta i risultati per i tuoi sistemi configurati.
Non credo che ci sia un'unica risposta giusta per la tua domanda. Sono molte le variabili che possono influenzare il tempo di caricamento di htaccess:
- Struttura delle cartelle del sito: tutti i file .htaccess in ogni 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: le regole di riscrittura e reindirizzamento possono essere più pesanti 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 riferimento.
- ab - Lo strumento di benchmarking del server HTTP Apache può aiutarti
Ulteriori informazioni:
Ho provato con e senza .htaccess e non sono riuscito a trovare alcuna differenza di velocità o sovraccarico. Certo, 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, il sovraccarico può essere evidente, così come @Iain ha detto di testare e vedere.
Personalmente faccio tutto usando il file .conf per un host virtuale e non il .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.