Kleine Tipps am Rande

Folgendes Szenario ist bestimmt jedem Webentwickler schon einmal begegnet: Man möchte in einer Schleife einen String konkatenieren (also anhängen) oder eine Zählvariable inkrementieren. Das „Tolle“ an PHP ist, dass man einfach so $i++ schreiben kann und alles funktioniert wunderbar (wenn man Notices-Meldungen deaktiviert hat, was auf Produktiv-Sites oft der Fall ist). Das Inkrementieren einer nicht-initialisierten Variable dauert allerdings ca 5 mal so lang wie das Inkrementieren einer initialisierten Variable.

In Funktionen sollten keine unnötigen Variablen übergeben werden, da das unnötig Zeit und Speicher kostet. Ebenfalls sollten keine globalen Variablen referenziert werden (Schlüsselwort global), wenn sie gar nicht benötigt werden. Das kostet genauso viel Performance wie das unnötige deklarieren einer nicht benutzten lokalen Variable, denn letztlich macht global ja eine globale Variable lokal verfügbar.

Das wollte ich nur kurz anmerken, da man immer wieder solche Schlampigkeiten sieht.

Damit dieser Post nicht all zu kurz wird, sei hier noch eine allgemeine Regel angepriesen: Das Kompilieren und Interpretieren von PHP-Scripts dauert ca 2-10 mal so lange wie das Laden einer statischen HTML-Seite.
Man sollte sich daher genau überlegen, ob es unbedingt eine PHP-Seite sein muss, wenn darin gar kein PHP ausgeführt wird. Ebenfalls liest man ab und zu, dass man aus SEO-Gründen per .htaccess oder php.ini-Einstellung PHP dazu bewegen soll, auch .html-Dateien zu parsen, damit darin enthaltener PHP-Code ausgeführt werden kann. Es mag sein, dass statische HTML-Seiten bei Suchmaschinen beliebter sind als ihre PHP-Pendants, allerdings sollte das nicht so massiv auf Kosten der Performance von wirklich staatischen Seiten gehen. Wer unbedingt die .html-Endung haben möchte, sollte mod-rewrite verwenden. Damit kann man sowieso viel schönere URLs zusammenbauen, als wenn man ein PHP-Script als HTML-Seite speichert, diesem dann doch die unerwünschten GET-Eingabeparameter übergibt und die Suchmaschinen einen dann wieder nicht mögen, denn ganz doof sind die auch nicht, wenn sie eine Seite xyz.html?par1=a&par2=b sehen.
Demzufolge: Statische Seiten einsetzen, wo nix Dynamisches gebraucht wird!

Jan hat 152 Beiträge geschrieben

2 Kommentare zu “Kleine Tipps am Rande

  1. Lars Krahl sagt:

    Zum letzten Absatz: Wie sieht es aus, wenn ich beispielsweise eine .php-Datei erstelle, da aber praktisch nur HTML reinschreibe, also keinen -Bereich? Wird die Ausgabe merklich langsamer, nur weil ich generell den PHP-Parser drauflos jage?
    Danke, Lars

  2. admin sagt:

    Ja, denn woher soll der Parser wissen, dass kein PHP in dieser Datei steht? Erstmal muss der PHP-Interpreter gestartet werden und dann muss dieser die Datei ja erstmal analysieren und das dauert eben seine Zeit. Und genau das ist mit dem Absatz auch gemeint: Wo nix PHP-artiges drinsteht, braucht man auch kein PHP drüberlaufen zu lassen. Ein „merklich“ langsamer ist natürlich übertrieben. Einige Tipps sind für den Menschen nicht fühlbar, denn wenn das Liefern der RÜckgabe-Seite statt 0,1 ms nun 1 ms dauert, merkt man das wahrscheinlich nicht. Wenn aber gleichzeitig 100 Leute Anfragen an den Webserver schicken und unnötig Ressourcen vergeudet werden, könnte man es schon merken.

Eine Antwort schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert mit *

You may use these HTML tags and attributes: <a href=""> <blockquote cite=""> <pre lang=""> <b> <strong> <i> <em>