Sven Rautenberg: *.img nicht umleiten

Beitrag lesen

Moin!

Tach!

Die Zend-Vorlage ist: Alles NICHT rewriten, wenn das Ziel ein File, ein Symlink oder ein Directory ist. Ansonsten rewriten.

Deine Alternative ist: Rewriten, wenn das Ziel kein File, kein Symlink und kein Directory ist.

Dazu muss aber dreimal im Filesystem geprüft werden, drei Bedingungen werden erfolglos ausgewertet, um zu Rewriten. Bei Zend wird nur bis zur ersten Bedingung geprüft.

Das klappt so aber nur unter der Annahme, dass die meisten Zugriffe auf Dateien gehen und nicht umgeschrieben werden. (Warum stehen dann Symlinks oben und nicht Dateien? Da geht auch noch ein Mikro wegzuoptimieren, wenn man keine oder kaum Symlinks hat.) Alles was aber umgeschrieben werden soll, muss fünf Bedingungen im Dateisystem abarbeiten. Dreimal erfolglos für die erste Regel und für die index.php nochmal -s und -f im zweiten Durchlauf, nach dem internen Redirect der zweiten Regel.

-s steht nicht für Symlinks, sondern für Dateien mit Größe > 0. -l steht für Symlinks.

Liest hier denn niemand mehr Doku?

Was das Optimierungspotential angeht: Für jeden Request muss man prüfen, ob es eine existente Ressource ist, die man ausliefern will, oder ob es ein virtueller Request ist, der auf die Applikation gehen soll. Also wird man möglichst nur einmal nach einem passenden File suchen, andernfalls das Rewriting auf die Applikation machen. Und genau das macht die Variante von Zend: Bei existenten Dateien wird nur exakt einmal gesucht und gefunden. Das macht das Ausliefern von existenten Ressourcen schnell. Rewriting auf die Applikation testet hingegen dreimal.

Deine Variante testet bei Rewrites auf die Applikation auch dreimal. Und bei Zugriffen auf existente Ressourcen ebenfalls.

Grüße Sven