Ist es in Ordnung, eine sehr lange .htaccess-Datei zu haben?

8

Ich gebe URLs an Leute auf einer Website aus, die auf etwas Hässliches verweisen (auf derselben Website).

Ссылка
zeigt tatsächlich auf Ссылка

Ich plane, dies zu erreichen, indem ich die .htaccess-Datei bei Bedarf ändere. Ich werde das PHP-Skript dazu bringen, in die .htaccess-Datei zu schreiben und eine neue Rewrite-Regel hinzuzufügen, sobald eine neue URL ausgegeben wird (aus einem Admin-Bereich, den ein Nicht-Programmierer steuern kann [geben Sie den URL-Titel an neuer Eintrag, admin: er wird automatisch zugewiesen]].

Wird das ein Problem sein, besonders nach etwa 1000 solcher URLs? Was ist die tatsächliche Anzahl, die akzeptabel ist? Ich kann mir das vorstellen: Der Server erhält eine Anfrage für eine URL, dann durchsucht er die .htaccess-Datei nach der richtigen Seite für diese URL und sendet den Benutzer schließlich an die richtige Seite. Wenn es sich um Datenbanksuche handelt, kann es sehr lange dauern, bis der Benutzer die richtige Seite erreicht hat ...

Irgendwelche Hinweise darauf, bitte?

    
Aditya M P 14.12.2010, 02:57
quelle

5 Antworten

18

Nein, es ist nicht in Ordnung und beeinträchtigt die Ladegeschwindigkeit.

.htaccess-Dateien werden bei jeder Serveranfrage ausgewertet. Auch für statische Bilder, CSS- und JS-Dateien. Also bitten Sie den Webserver, während der Ausführung einer Anfrage 1000+ lange REGEX-Zeilen zu analysieren.

Außerdem wird die .htaccess-Datei des übergeordneten Verzeichnisses für Dateien verarbeitet, die sich ebenfalls im Unterverzeichnis befinden. Wenn sich Ihre große .htaccess-Datei im Stammverzeichnis der Website befindet, wird sie für alle Anfragen verarbeitet, die auch für Dateien in den Unterverzeichnissen (zusammen mit der .htaccess-Datei im Unterverzeichnis) erstellt wurden.

Das ist mein Freund ist eine Menge Verarbeitung. Wenn Sie eine Seite mit 10 Bildern haben (zum Beispiel), werden 11 Mal Prozesse verarbeitet. Und je mehr in der Datei verarbeitet wird, desto mehr Zyklen dauert es. Also, alles in einer htaccess-Datei hat Auswirkungen. Ist dieser Aufprall jetzt bemerkbar? Es ist schwer zu sagen, wann es ein Problem wird. Aber es müsste ziemlich groß sein, da die Verarbeitung relativ einfach ist, was in deinem Fall ist.

Der Schlüssel mit einer htaccess-Datei ist, es schlau zu machen. Sie möchten nicht 200 Einträge auflisten. Sie können es mit nur ein paar Zeilen schlau machen (wenn Sie htaccess verwenden möchten).

    
shamittomar 14.12.2010, 03:09
quelle
5

Ich würde einen einfachen Test durchführen: Erzeugen Sie eine große .htaccess-Datei mit zufälligen URLs und messen Sie die resultierende Leistung selbst.

%Vor%     
Martin v. Löwis 14.12.2010 03:10
quelle
4

Es ist wirklich nicht ratsam, so viele Regeln zu haben. Es ist nicht so, dass sie sich in einer .htaccess-Datei befinden oder dass sie für jede Anfrage getestet werden. (Abhängig von der Konfiguration kann dies auch passieren, wenn Sie sie in die Konfiguration Ihres Servers oder Ihres virtuellen Hosts einfügen.)

Es ist die bloße Tatsache, dass diese riesige Menge an Regeln getestet wird und, abhängig von den Regeln, muss jede Regel getestet werden, bis eine Übereinstimmung gefunden wird.

Nun, Sie könnten dem entgegenwirken, indem Sie die Regeln in der Reihenfolge der Übereinstimmungswahrscheinlichkeit anordnen, so dass die Wahrscheinlichkeit, eine Übereinstimmung früh zu finden, hoch ist. Aber die Komplexität ist im schlimmsten Fall immer noch O (n).

Wenn Sie wirklich so viele Zuordnungen benötigen und die Zuordnungen festgelegt sind, können Sie eine % co_de verwenden % Hash-Datei mit einer Komplexität von O (1) anstelle von O (n) für die getrennten Regeln. Oder Sie verschieben das Mapping auf Ihre PHP-Anwendung und tun es dort.

    
Gumbo 14.12.2010 08:16
quelle
1

Es sollte in Ordnung sein. Es kann sein, dass die Serververzögerung nur dann auftritt, wenn sie wirklich lang wird. Ich würde in mod_rewrite specs schauen, könnten Sie in der Lage sein, die Forwards mit ein paar Zeilen zu automatisieren & amp; Regex-Funktion. Ich weiß nicht genug über die URL-Variablen, die weitergegeben werden, um Ihnen ein Beispiel zu geben.

    
ATLChris 14.12.2010 03:02
quelle
1

Es ist definitiv nicht in Ordnung, wie einige Leute hier erwähnt haben.

Kennst du alle URLs, die du vorher umschreiben möchtest? Wenn dies der Fall ist, können Sie die Regeln in einer Datenbank speichern, durch die Regeln iterieren und das tatsächliche generieren URLs, und speichern Sie sie in Memcache, wobei der Schlüssel die gut aussehende URL und der Wert die tatsächliche URL des Inhalts ist.

Wenn die Anfrage kommt, suchen Sie den Schlüssel in Memcache und leiten Sie den Benutzer an die echte URL weiter. Ich glaube nicht, dass du dafür .htaccess brauchst.

    
Henley Chiu 25.03.2011 13:23
quelle