Beim Arbeiten an PHP-basierten Websites ist die Ladegeschwindigkeit von Webseiten eines der wohl häufigsten Optimierungsmaßnahmen. Und auch wenn Google die Ladezeiten von Webseiten als nur eines der über 200 weiteren Kriterien für das Ranking von Webseiten berücksichtigt, bedeutet dies natürlich keinesfalls, dass die Ladezeit als Rankingfaktor nicht wichtig ist.
Gerade für Deine Besucher sind schnell ladende Webseiten das Beste, was Du ihnen geben kannst, abgesehen vom Inhalt. In diesem Artikel zeige ich Dir einen sehr einfachen und effizienten Weg, den Du in nur drei einfachen Schritten beschreiten kannst, um einen dynamischen Cache Deiner PHP-Seiten zu erstellen.
1. Erstelle die Datei top-cache.php
Wir benötigen zwei Dateien. Hier ist die Erste: Erstelle eine neue Datei namens top-cache.php
. Füge folgenden Code in diese Datei:
<?php $url = $_SERVER["SCRIPT_NAME"]; $break = Explode('/', $url); $file = $break[count($break) - 1]; $cachefile = 'cached-'.substr_replace($file ,"",-4).'.html'; $cachetime = 18000; // Serve from the cache if it is younger than $cachetime if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n"; include($cachefile); exit; } ob_start(); // Start the output buffer ?>
Was macht nun dieser Code?
- Die ersten fünf Zeilen erstellen den Cache-Dateinamen nach der aktuellen PHP-Datei. Wenn Du also eine Datei namens
liste.php
verwenden würdest, würde die Cache-Dateicached-liste.html
benannt werden. - Zeile 6 erstellt eine
$cachetime
-Variable, welche die Lebensdauer des Caches bestimmt. - Zeile 9 bis 13 definiert eine bedingte Anweisung, die nach der
$cachefile
-Datei sucht. Wenn diese Datei nicht gefunden wird, wird ein Kommentar eingefügt (Zeile 10) und der Inhalt der$cachefile
-Datei wird ausgegeben. Dann stoppt dieexit
-Anweisung des Scripts und die Datei wird an den Client-Browser geschickt. Was bedeutet, dass, wenn eine statische Datei gefunden wird, kein PHP-Code vom Server interpretiert wird. - Zeile 14 erzeugt einen Puffer, wenn die
$cachefile
-Datei nicht gefunden wird.
Das ist soweit alles für die top-cache.php
-Datei.
2. Erstelle die Datei bottom-cache.php
Erstelle nun eine zweite PHP-Datei namens bottom-cache.php
und füge folgenden Code darin ein:
<?php // Cache the contents to a file $cached = fopen($cachefile, 'w'); fwrite($cached, ob_get_contents()); fclose($cached); ob_end_flush(); // Send the output to the browser ?>
Wenn die $cachefile
-Datei nicht auf Deinem Server gefunden wird, wird dieser Code ausgeführt und erstellt eine Datei, sodass beim nächsten Seitenaufruf die statische $cachefile
-Datei auf dem Client-Browser ausgegeben wird, anstelle der der gesamten PHP-Datei.
3. Binde die Cache-Dateien in Deine Seiten ein
Nun hast Du die beiden notwendigen Cache-Dateien erstellt. Als Letztes brauchst Du diese nur noch in die PHP-Dateien einbinden, die Du cachen möchtest.
Wie Du sicherlich vermuten kannst, muss die top-cache.php
-Datei an den Anfang der PHP-Seite eingegliedert werden und die bottom-cache.php
-Datei an das Ende der gewünschten PHP-Seite. Wie folgt:
<?php include('top-cache.php'); // Your regular PHP code goes here include('bottom-cache.php'); ?>
Wenn Du nun diese Caching-Methode auf einer langsam ladenden Seite testet, wirst Du erstaunt sein, wie viel schneller die Seite nun lädt. Diese einfache Caching-Methode ist eine favorisierte Lösung bei der Arbeit an, von Grund auf neuen, PHP-Websites.
(Quelle: www.catswhocode.com)
Hallo Jonathan!
Sehr interessanter Artikel. Dieses Problem mit der Geschwindigkeit habe ich auf meiner Webseite und habe bis jetzt keine zufriedenstellende Lösung gefunden. Deswegen eine Frage dazu: Funktioniert das auch mit WordPress? Wenn ja, wo müssen dann die Verweise auf diese zwei Scripte stehen (z.B. in header.php etc.)?
MfG
SF
Da WordPress ebenfalls auf PHP basiert, funktioniert es auch wunderbar mit WordPress. Wo Du die Cache-Dateien eingliederst, hängt ein bisschen davon ab, welcher Struktur der Code in Deinem Theme-Dateien unterworfen ist.
Versuchs doch einmal mit der
single.php
– und derpage.php
-Datei. Diese Dateien liegen in der Regel im Hauptverzeichnis Deines Themes.Lieben Gruß