2009-03-25 9 views
7

Domanda semplice. C'è un limite al numero di RewriteRules che posso avere nel mio .htaccess o posso metterne dentro un miliardo di zeri senza che Apache diventi troppo funky con me?Quante RewriteRules puoi avere in .htaccess senza problemi?

C'è un limite relativo in cui il server semplicemente si immerge perché ci sono molte regole da scorrere?

Grazie!

risposta

3

Se RewriteRules include diversi è il file esistente (-F) o è esistente url (-U), poiché quelli sono sottoquest, si potrebbe vedere un colpo di prestazioni. Al di fuori di questi, non ho riscontrato una situazione in cui diverse RewriteRules hanno iniziato a influire negativamente sulle prestazioni e la mia attuale implementazione ha una buona quantità.

È possibile limitare la necessità di ripetere tutte le RewriteRules semplicemente ordinandole in modo che i controlli più costosi vengano eseguiti successivamente (se possibile), in modo che i condizionali precedenti possano cortocircuitare dal la tua logica di riscrittura e ti risparmia il calcolo delle regole più costose più avanti nel processo.

6

Devi sapere che lo .htaccess configuration files are being processed on every request.

Quindi se si dispone di un file .htaccess con 1000 regole, il caso peggiore è che ogni 1000 regole vengono testate ogni volta che una richiesta raggiunge questa directory.

Pertanto, è necessario utilizzare una struttura in cui una regola corrisponde a una richiesta il prima possibile. Le regole che gestiscono richieste più frequenti dovrebbero apparire prima di quelle meno frequenti e determinare l'elaborazione (vedere L flag). Maggiori informazioni su ruleset processing per sapere come vengono elaborate le regole (vedere anche RewriteLogLevel direcitve).

Un altro fattore sono le espressioni regolari: meglio utilizzare espressioni regolari "semplici" ed efficienti rispetto a quelle ambigue o complesse. Dovresti esaminare in che modo le espressioni regolari vengono interpretate ed elaborate per evitare quelle costose e ottenere il massimo da esse.

Problemi correlati