PHP-Script-Caching

Caching Technologien auf dem eigenen Server können eine Menge an Performance ausmachen. Solche Cache-Software wirbt mit teilweise über 400%iger Beschleunigung des Codes – was natürlich sehr attraktiv ist.
Und tatsächlich bringen diese Beschleuniger etwas.

Das ganze funktioniert recht simpel: Jedes PHP-Script muss vor der Ausführung (logischerweise) kompiliert werden. Die Cache-Software hält das Skript im Kompilierten Zustand in einem Cache und stellt bei erneutem Aufruf des Skript die bereits kompilierte Version direkt zur Verfügung. Der gesamte Kompilierungs-Overhead muss somit nicht wiederholt werden.

Die zwei besten Beschleuniger sind der ZendOptimizer von Zend Inc. und der nicht-kommerzielle (OpenSource) Turck MMcache.

Der ZendOptimizer bringt ein einfaches Installations-Script mit sich welches den Optimizer selber installiert. Die MMcache Version ist recht einfach zu kompilieren und über die php.ini einzubinden.

Ich empfehle MMcache weil diese Version frei ist und mehr Einstellungsmöglichkeiten bietet als der ebenfalls „frei erhältliche“ ZendOpti.

Wer übrigens nicht auf den Server zugreifen bzw. dort Programme kompilieren kann, dem empfehle ich JP Cache. Bei diesem Cache Tool handelt es sich um eine ähnliche Funktionsweise wie bei Ausgaben in Cache speichern. Allerdings kann man die Ausgaben auch in einer Datenbank speichern und es sind einige „Komfortfunktionen“ enthalten, wie das Senden eines 304-Headers (Not modified).

Der Turck MMCache wird nicht mehr weiterentwickelt bzw. rangiert er mittlerweile unter neuem Namen: E Accelerator

Jan hat 152 Beiträge geschrieben

9 Kommentare zu “PHP-Script-Caching

  1. Duddle sagt:

    Hmmm, ich bin nicht so der Pro, wenn es um die Sachen hinter der Bühne von PHP geht, aber das Prinzip dieser Cache-Software scheint mir suspekt:
    Mit PHP will ich doch in der Regel erreichen, dynamisch Webseiten zu liefern. Wenn ich die jetzt aber im Cache halte, sind die doch schon wieder statisch? Für Seiten mit sehr wenigen Änderungen mag das ja noch gehen, aber bei viel Dynamik (z.B. in nem Forum)?
    Duddle

  2. admin sagt:

    Gebe zu, für jemanden, der nicht ganz so tief in der Materie steckt, klingt es zunächst unlogisch, aber:
    Es wird nicht die php-Datei selbst gecacht sondern die Ausgabe einer bestimmten URL. Und sowohl in Foren als auch Online-Shops wird meistens nicht einfach seite.php sondern seite.php?id=123 aufgerufen oder mit irgendwelchen anderen Parametern.
    Und besonders in einem Online-Shop ist es z.B. bei Artikelbeschreibungsseiten sinnvoll, die Ausgabe zu cashen, da die Beschreibung für diesen einen Artikel wahrscheinlich nicht alle x Minuten geändert wird.
    Bei einem Forum muss ich dir zustimmen, da machts recht wenig Sinn, da man da ja sofort die soeben gepostete Antwort lesen möchte.

  3. Tim sagt:

    Wie genial, letzte Woche nach genau solch einer Erklärung gesucht und heute hier durch Zufall gefunden. Tolles Blog!

  4. manu sagt:

    guter artikel. dadurch kam ich auf jpcache und bin damit absolut zufrieden. eine website mit mehr als 20000 besuchern am tag und exzessiven datenbankzugriffen wird damit sehr gut „beschleunigt“.

  5. Marco sagt:

    „JP Cache“ heißt jetzt wohl „Quick Cache“ und ist auf „http://sourceforge.net/projects/quickcache“ zu finden. Hat das schon jemand getestet? Ich kenne mich nicht gut damit aus und möchte es nicht verwenden, wenn es noch kein anderer getestet hat und etwas darüber erzählen kann…

  6. Jan sagt:

    Werd ich mir mal ansehen morgen, ob das wirklich eine Weiterentwicklung von JP Cache ist. Und falls ja, dann mal sehen, was hinzugefügt wurde.
    Zeit wäre es ja, denn die letzte Version von JP Cache hat schon einige Jährchen aufm Buckel.

  7. Xel sagt:

    „Gebe zu, für jemanden, der nicht ganz so tief in der Materie steckt, klingt es zunächst unlogisch, aber:
    Es wird nicht die php-Datei selbst gecacht sondern die Ausgabe einer bestimmten URL.“

    Auch wenn das schon ein bisschen her ist, richtiger wirds dadurch ja nicht…
    Die Ausgabe wir bei jpCache sicherlich gecached.
    Bei MMCache, eAccelerator, XCache und APC läuft das ganze aber anders. Da wird der op-Code gecached – das ist dann so ähnlich, als würde man das Script kompilieren und müsste es danach nur noch starten, statt jedesmal den Interpreter drüber laufen zu lassen.

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>