PHP Caching - Ist es schneller in der Datenbank zu speichern oder eine Datei zu erstellen?

8

Ich speichere dynamisch generierte PHP-Seiten, indem ich sie in einer Datenbank mit einem Ablaufzeitfeld abspeichere. Wenn die Seite erneut angefordert wird, sucht das Programm nach einer nicht abgelaufenen zwischengespeicherten Version der Seite, die auf dem Bildschirm angezeigt wird, und regeneriert die Seite nur, wenn sie keine finden kann.

Dies funktioniert gut - aber würde es den Server weniger belasten, die zwischengespeicherten Seiten als Dateien zu speichern und stattdessen in der Datenbank zu speichern? Ich könnte eine Namenskonvention in den Dateien verwenden, um die Ablaufzeit zu behandeln.

Wenn es schneller und weniger Serversteuerungen sind, von einer Datei statt von einer Datenbank zu lesen / schreiben, werde ich zu dieser wechseln. Weiß jemand, was schneller ist / Best Practice?

    
Dan 19.05.2011, 03:23
quelle

4 Antworten

6
  

Wenn es schneller und weniger Serversteuerungen sind, von einer Datei statt von einer Datenbank zu lesen / schreiben, werde ich zu dieser wechseln. Weiß jemand, was schneller ist / Best Practice?

Am schnellsten werden statische Dateien verwendet, da Sie dann den Cache ausgeben können, ohne PHP zu starten (mit RewriteRules). Es wird jedoch nicht richtig skaliert, wenn Sie mehrere Frontends haben.

Die nächste beste Sache ist, es im Speicher zu speichern, Memcache zum Beispiel.

Am wenigsten vorzuziehen ist die Verwendung von SQL. Wenn Sie dabei bleiben, tun Sie Ihrer Festplatte zumindest einen Gefallen, indem Sie die Speicher-Engine oder Ähnliches verwenden (z. B. eine nicht gemeldete Tabelle, die in einem auf einer RAM-Disk gespeicherten Tablespace lebt, wenn Sie PostgreSQL verwenden) >     

Denis de Bernardy 19.05.2011, 03:46
quelle
2

Beide Optionen verwenden das Dateisystem, da (unter der Annahme, dass Sie MySQL ohne MEMORY / HEAP-Tabellen verwenden) Datenbankeinträge immer noch in Dateien gespeichert sind.

Wenn Sie zum Zeitpunkt der Anforderung der zwischengespeicherten Daten eine aktive Datenbankverbindung haben, bleibe ich bei der Datenbank.

    
pkavanagh 19.05.2011 03:30
quelle
0

Hier ist etwas Interessantes, das ich nie ausprobiert habe, aber von dem ich gute Dinge gehört habe. Sie können die Google Spreadsheet-API verwenden, um über HTTP-Anfragen als Datenbank zu fungieren. Es klingt (zumindest theoretisch) so, als wäre es eine ideale Lösung für ein Problem wie dieses. Keine Antwort auf deine Frage, nur eine weitere Option.

    
locrizak 19.05.2011 03:30
quelle
0

Es gibt keine echte Antwort auf Ihre Frage, es hängt wirklich von der Anzahl der Abfragen und dem Cache ab, den die Datenbank verwendet, im Gegensatz zu der Zeit, die zum Analysieren einer Datei benötigt wird. Eine Menge anderer Faktoren können auch stattfinden.

Allerdings können Sie PHP-Erweiterungen wie Memcached verwenden Denis schlug vor. Dies funktioniert noch besser in Kombination mit einer Datenbank, indem ein Framework wie Doctrine verwendet wird. Dies erleichtert die Verwaltung Ihrer Daten mithilfe der Datenbank. Und bedienen Sie die tatsächlichen Daten in der Produktion, indem Sie Abfrageergebnisse zwischenspeichern.

    
Tim 29.01.2016 12:39
quelle

Tags und Links