Ab wann lohnt sich Cachen
Naps
- php
0 T-Rex0 molily0 Encoder0 Jörg Reinholz
Hi,
würdet Ihr das Ergebnis einer DB Abfrage auch cachen wenn das "Ergebnis" nur ein paar mal benötigt wird?
Oder erst nach 100, 200 mal oder mehr?
Gibt es Richtwerte?
MfG Naps
Man müsste zu erst ein Ziel definieren.
Wenn deine Seite bereits super schnell läd, würde ich mir um jegliche Optimierung keine Gedanken machen. Wenn deine Webseite aber eher langsam läd, würde ich sie optimieren.
Dabei würden jedoch andere Optimierungsmöglichkeiten im Vordergrund stehen z.B. Request sparen. Das Datenbank Caching spielt wie ich finde eine eher untergeordnete Rolle. Die wenigsten Webseiten haben eine Datenmenge im Hintergrund wo sich das Cachen lohnen würde.
Ansonsten gibt es noch die Möglichkeit den Output einer Webseite zu cachen. Damit spart man sich natürlich auch die meistens DB Zugriffe.
Ich würde grob zusammenfassen, alles was langsam läuft sollte man beschleunigen. Ein Caching wäre da nur eine Möglichkeit.
Gruß
Uli Hoeneß in einer Boing 404 als Botschafter in die Ukraine entsendender
T-Rex
Hallo,
Gibt es Richtwerte?
Die Richtwerte für sämtliche Performance-Optimierungen sind:
100 Performance messen
200 Hot Spots / Bottlenecks identifizieren
300 Verbesserungen vornehmen
GOTO 100
Vollständiger:
100 Implementierung nach bestem Gewissen (»mature optimization«)
200 Performance messen
300 Hot Spots / Bottlenecks identifizieren
400 Verbesserungen vornehmen
500 Regeln destillieren für die künftige Implementierung
GOTO 100
Übrigens ist das bekannte Bonmot über Reguläre Ausdrücke auch auf Caching anwendbar:
“Some people, when confronted with performance problems, think: ‘I know, I’ll use caching.’ Now they have one problems.” (sic) ;)
Mathias
Wie oft und in welcher Zeit ist "ein paar mal"?
Wenn es innerhalb einer Aktion ist würde ich es in einer Tabelle zwischenspeichern, temporäre oder RAM Tabelle oder wie auch immer das heißt.
Sonst, wenns keine Probleme macht würde ich es nicht tun. Miss die Zeit die so eine Abfrage braucht und entscheide dann ob sich weitere Gedanken lohnen oder nicht.
würdet Ihr das Ergebnis einer DB Abfrage auch cachen wenn das "Ergebnis" nur ein paar mal benötigt wird?
Das kommt auf viele weitere Umstände an. Handelt es sich z.B. um ein CMS und werden quasistatische Webseiten erzeugt, dann würde ich in jedem Fall die ganzen resultierenden Seiten cachen.
Oder erst nach 100, 200 mal oder mehr?
Meinst Du, *erfolgte* Requests oder *zu erwartende* Requests? Und in welchem Zeitfenster? Und wie viele verschiedende Requests können es denn sein? Wie hoch sind die Datenmengen? Es nützt nichts zu cachen, wenn die Verwaltung des Caches "teurer" (bezogen auf den Zeitaufwand) wird als die Abfragen.
Gibt es Richtwerte?
Eher nicht. Das ist zu individuell, da sind so allgemeine Aussagen nicht möglich. Wenn Deine Webseite aber z.B. bei 100 Requests/Minute erlahmt oder gar down geht, weil für den Aufbau der Startseite 50 Datenbankabfragen nötig sind, dann würde ich nicht nur über einen Cache der Results sondern über eine ganze Anzahl weiterer Optimierungen (auch in der Richtung "Tut dat not?") nachdenken.
Jörg Reinholz