2009-03-25 13 views
7

Proste pytanie. Czy istnieje limit liczby RewriteRules, które mogę mieć w moim pliku .htaccess, czy mogę w nich umieścić ich milion, a Apache nie będzie działał na mnie?Ile RewriteRules możesz mieć w .htaccess bez problemów?

Czy istnieje względny limit, w którym serwer po prostu nurkuje, ponieważ istnieje wiele reguł do iteracji?

Dzięki!

Odpowiedz

3

Jeśli twoje RewriteRules zawierają kilka istniejących plików (-F) lub są istniejące flagi url (-U), ponieważ są to subskrypcje, możesz zobaczyć działanie wydajności. Poza tym nie doświadczyłem sytuacji, w której kilka RewriteRulesów zaczęło niekorzystnie wpływać na wydajność, a moja obecna implementacja ma dużą ilość.

Możesz ograniczyć potrzebę iteracji przez wszystkie RewriteRules, zamawiając je w taki sposób, aby później droższe kontrole zostały wykonane w procesie (jeśli to możliwe), w ten sposób wcześniejsze warunki mogą spowodować zwarcie poza twoja logika przepisywania i zaoszczędzisz obliczenia droższych reguł na późniejszym etapie procesu.

6

Musisz wiedzieć, że .htaccess configuration files are being processed on every request.

Jeśli masz plik .htaccess zawierający 1000 reguł, najgorszym przypadkiem jest testowanie co 1000 reguł za każdym razem, gdy zapytanie trafi do tego katalogu.

Dlatego należy użyć struktury, w której reguła pasuje do żądania tak wcześnie, jak to możliwe. Reguły, które obsługują częstsze żądania, powinny pojawić się przed tymi, które są rzadsze i określić przetwarzanie (patrz L flag). Przeczytaj o numerze ruleset processing, aby dowiedzieć się, jak przetwarzane są reguły (patrz także: RewriteLogLevel direcitve).

Innym czynnikiem są wyrażenia regularne: Lepiej używać "prostych" i wydajnych wyrażeń regularnych niż niejednoznacznych lub złożonych. Powinieneś sprawdzić, w jaki sposób wyrażeń regularnych są interpretowane i przetwarzane, aby uniknąć kosztownych wyrażeń i uzyskać jak najwięcej z nich.

Powiązane problemy