Ladezeitwirkung von htaccess

15

Es gibt im Allgemeinen zwei Möglichkeiten, mit Apache umzugehen:

  • Konfigurieren Sie die Ordner einzeln mit der HTAccess-Datei

  • um htaccess vollständig zu resignieren und alle Regeln in die httpd.conf zu schreiben

Die Verwendung von htaccess ist ein Problem mit der Ladezeit. Ich möchte wissen, wie teuer die Ladezeit für die Nutzung von htaccess ist. Gibt es irgendwelche Tests?

Evgeniy
quelle

Antworten:

22

Die Empfehlung des Apache-Projekts lautet:

Im Allgemeinen sollten Sie .htaccess-Dateien nur verwenden, wenn Sie keinen Zugriff auf die Konfigurationsdatei des Hauptservers haben. ... ein häufiges Missverständnis ist, dass Benutzerauthentifizierungs- und mod_rewrite-Anweisungen in .htaccessDateien abgelegt werden müssen.

Also bitte sowohl set AllowOverride Noneals auch all deine anderen Direktiven in der httpd.conf (und / oder den Unterabschnitten die du Include)


Wenn Apache nicht mit AllowOverride NoneIhnen konfiguriert ist , treten bereits (geringfügige) Leistungseinbußen auf, unabhängig davon, ob .htaccessDateien verwendet werden oder nicht .

Dies liegt daran, dass Apache für jede einzelne Anforderung.htaccess in jedem (Unter-) Verzeichnis, das zur angeforderten Ressource führt, auf das Vorhandensein einer potenziellen Datei prüfen muss . Wenn beispielsweise eine Datei aus einem Verzeichnis / www / htdocs / example angefordert wird, muss Apache nach den folgenden Dateien suchen:

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

Und so gibt es für jeden Dateizugriff aus diesem Verzeichnis 4 zusätzliche Dateisystemzugriffe, auch wenn keine dieser Dateien vorhanden ist. (Wenn AllowOveride für / eingestellt ist)

Der Systemaufruf, der für das ( man 2 stat) alleine verwendet wird, ist nicht so teuer, und normalerweise wird der Dateisystem-Cache verwendet, anstatt die tatsächliche Festplatte abzufragen, wodurch die tatsächlichen E / A-Anforderungen begrenzt werden. Er kann sich jedoch summieren, wie in diesem Artikel dargelegt.


Wenn eine oder mehrere tatsächliche .htaccessDateien tatsächlich vorhanden sind, muss Apache sie weiterhin openlesen (was eine weitere E / A-Leseoperation und normalerweise auch eine E / A-Schreiboperation zum Aktualisieren des Dateisystemattributs auslöst atime) und analysieren , bevor die darin enthaltene Logik angewendet werden kann.

Im Gegensatz zu den Direktiven in der Hauptanwendung httpd.conf, die nur einmal vom Apache analysiert werden müssen, muss beim Start jede .htaccessDatei für jede einzelne Anforderung erneut interpretiert werden.

Wie teuer das Parsen der .htaccess-Dateien zusätzlich zu den E / A-Vorgängen ist, hängt von ihrer Komplexität ab.

Hierfür ist ein sorgfältiges Benchmarking erforderlich.

HBruijn
quelle
4

Die Kosten hängen davon ab, wie leistungsfähig der Server ist, insbesondere von seinem Speicher-E / A-Subsystem und davon, ob Caching erforderlich ist.

Sie können es testen , indem Sie Ihr System mit .htacess konfigurieren und laden , wie Sie es von jedem Webserver gewohnt sind . Konfigurieren Sie dann das System ohne .htaccess und führen Sie dieselben Tests durch.

Vergleichen und vergleichen Sie die Ergebnisse für Ihre konfigurierten Systeme.

user9517 supportedGoFundMonica
quelle
1

Ich glaube nicht, dass es eine einzige richtige Antwort auf Ihre Frage gibt. Gibt es viele Variablen, die die Ladezeit von htaccess beeinflussen können:

  • Site-Ordnerstruktur: Alle .htaccess-Dateien in den einzelnen Ordnern werden bei jedem Öffnen der Seite geladen.
  • Wie lang ist die Htaccess-Datei: 200 Zeilen vs 3500 Zeilen? Es gibt einen großen Unterschied.
  • .htaccess-Konfiguration: Umschreibungs- und Umleitungsregeln können umfangreicher sein als andere (und sind nicht die einzigen).
  • Die Netzwerkverbindung auf der Clientseite kann die Ladezeit beeinflussen. IMO, Sie können es von mehr als einem Ort versuchen und die durchschnittliche Zeit als Referenz nehmen.
  • Das ab - Apache HTTP Server Benchmarking Tool kann Ihnen dabei helfen

Mehr Info:

HEDMON
quelle
1

Ich habe mit und ohne .htaccess getestet und konnte wirklich keinerlei Geschwindigkeits- oder Overheadunterschiede feststellen. Zugegeben, ich betreibe nur 16 Sites und es ist ein superschneller Server. In meinem Fall ist das Verfolgen von Millisekunden fast unmöglich. Auf einem Server, auf dem Hunderte von Sites ausgeführt werden, kann der Overhead spürbar sein, wie @Iain sagte, testen und sehen.

Ich persönlich mache alles mit der .conf-Datei für einen virtuellen Host und nicht mit der .htaccess-Datei, die mir die absolute Kontrolle über alles gibt. Sie ist sauberer und wird einmal in den Speicher von Apache geladen. Sogar meine WordPress-Umschreiberegeln befinden sich in meinen .conf-Dateien, sodass sie niemals brechen können.

MitchellK
quelle
wie schnell ist super schnell
James Kirkby
@ James Kirkby Ich schicke Ihnen die genauen Serverspezifikationen später aus dem Büro. Ich lasse alles in Proxmox-Behältern laufen. Mein Webserver und meine 16 WordPress-Websites haben alle einen 91-96-Wert bei Google Pagespeed und ich optimiere und optimiere immer noch.
MitchellK
@JamesKirkby Es hat 2 x 6 Core-Prozessoren und 64 GB RAM mit Ubuntu 14.04, Apache 2.4.7 und PHP-FPM. Es ist ein kleines bemerkenswertes Tier, ich bin begeistert von seiner Leistung.
MitchellK