Moin!
Da ich die Details der einzelnen Artikel aber auch in nachfolgenden Seiten wieder brauche, lege ich die Details in Session-Variablen ab.
Eine Session ist kein Cache.
Warum nicht? Der Vorteil eines Caches ist, dass man den Wert einmal aufwendig ermittelt und dann zusätzlich einmal in den Cache schreibt, um ihn später schnell erneut lesen zu können - so lange, wie er als gültig angesehen wird.
Alle Daten einer Session werden zum Beginn des Skripts in den Speicher geladen und am Ende wieder weggeschrieben. Dieser Vorgang erfordert ständiges Serialisieren und Unserialisieren - diese Vorgänge sind ziemlich CPU-lastig - und ständiges Lesen und Schreiben dort, wo die Session persistent gespeichert ist. Je mehr Daten bewegt werden, desto langsamer wird alles.
Ist es sinnvoll, die Werte der Session-Variablen gleichzeitig auch lokalen Variablen zuzuweisen, damit der Code besser lesbar ist, was dann aber wieder eine größere Datei und einen höheren Arbeitsaufwand auf dem Server bedeutet, oder sollte man nach dem Anlegen der Session-Variablen nur noch mit diesen arbeiten, was zwar eine kleinere Datei bedeutet, den Code aber unübersichtlicher macht?
Die Dateigröße des Codes ist recht irrelevant. Lesbarkeit des Code bedeutet viel mehr, als wenige Mikrosekunden bessere Performance, denn die Lesbarkeit beeinflusst direkt die Geschwindigkeit der Entwickler. Wenn die CPU zu lahm ist, den Code auszuführen, dann kauft man sich einen schnelleren Server, oder zwei - alles billiger, als monate- und jahrelang nicht die beste Performance vom Entwickler zu erhalten. Entwickler sind teuer.
Darüber hinaus ist es aus Codegründen ohnehin angesagt, möglichst KEINE Zugriffe auf globale Variablen zu machen - und $_SESSION gehört eindeutig dazu. Solchen Code kann man nämlich nur sehr schwierig testen. Also kapseln. Und kopieren! Nur-Lese-Kopien von Variablen sind in PHP performante Referenzen auf den Originalwert, die erst beim Ändern der Variablen echt kopiert werden und dabei die Referenz auflösen.
- Sven Rautenberg