» HTML-Seite in Cache schreiben um MySQL-Abfragen zu sparen

Nur lauter fehlermeldungen!!!Neuen Thread eröffnenNeue Antwort erstellenTop PHP Profi gesucht!
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52421
Wohnort: Lohmar


Meine eBay-Auktionen:
25.02.2012, 13:03
zitieren

Das geht ganz einfach. Hier ein Beispiel:

<?php
// ab hier html kopf, menü, usw., eben alles was nicht in den cache soll, weil es sich z.b. ändert, wenn sich jemand einloggt
?>
<html>
<head>
</head>
<body>
<div id="header">
Website
</div>
<?php
// ab hier der content, der in den cache soll

// cache filename wird gebildet aus "script.php?foo=1&bar=2&PHPSESSID=098f6bcd4621d373cade4e832627b4f6", wobei die PHPSESSID entfernt wird, um mehrfache caches zu verhindern
$cache_filename = 'cache/' . (preg_replace(array('#([\w\d]+=[a-f0-9]{32})#', '#[^a-z0-9-_]#', '#([_])+#'), array('', '_', '$1') , $_SERVER['REQUEST_URI'])) . '.txt';
// cache existiert und ist nicht zu alt, also cache nutzen
// 86400 Sekunden = 1 Tag
if (file_exists($cache_filename) && @filemtime($cache_filename) + 86400 > time()) {
echo @file_get_contents($cache_folder . $cache_filename);
}
// cache fehlte oder war zu alt, also live auslesen und cache erstellen/überschreiben
else {
ob_start();
?>
<div>
Content
<?php
// mysql abfragen sind auch mit im cache (werden dann nicht mehr ausgeführt, sondern das "echo"-Ergebnis landet nur im Cache
?>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
@file_put_contents($cache_filename, $html);
echo $html;
}
// ab hier der fuß usw. gleiches spiel wie beim kopf.
// der fuß kann evtl. auch in den cache, weil sich da nichts ändert, aber ich empfehle es nicht, weil man evtl. selbst mal später was hinzufügen will
?>
<div id="footer">
Copyright
</div>
</body>
</html>

Alternativ kann man aber auch einzelne MySQL-Abfragen in einen Cache schreiben. Kommt ein wenig auf das Konzept der Programmierung und Seiteninhalte an.

Gruß



Verfasst am: 26.02.2012, 11:33
zitieren

In der Regel nicht nötig, aber so könnte man das cache/-Verzeichnis manuell wieder leeren:
<?php
$dir = 'cache/';
// Öffnen eines bekannten Verzeichnisses und danach seinen Inhalt einlesen
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
// nur dateien prüfen (keine unterverzeichnisse)
if (!is_file($dir . $file)) {
continue;
}
// ist die datei älter als einen tag? Dann löschen (wer will kann für debug zwecke auch alles sofort löschen. dann einfach die bedingung weglassen)
if (@filemtime($dir . $file) + 86400 < time()) {
@unlink($file);
}
}
closedir($dh);
}
}
?>

 1x  bearbeitet
pn email
Gast 
26.02.2012, 11:33
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "HTML-Seite in Cache schreiben um MySQL-Abfragen zu sparen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
include(), MySQL-Cache und Race Conditions
Manche nutzen include() um MySQL Caches einzubinden. D.h. erst werden die Daten mit SELECT aus der MySQL Datenbank ausgelesen, mit var_export() aufbereitet und dann in eine Datei geschrieben. Diese kann man dann sehr performant per include()...
[PHP]von mgutt
0
299
07.09.2014, 12:56
mgutt
Benchmark: mysql, mysqli - Buffer, Cache und Prepared Stmt
Hallo, ich habe mir mal die Mühe gemacht und die verschiedensten Varianten, wie man eine Abfrage gestalten könnte, in einen Benchmark gepackt und ausgewertet. Hier erstmal die umfangreichen Logs: /* // vars $id = 1111; $email =...
[PHP]von mgutt
1
1.083
09.10.2009, 22:59
mgutt
Programmierer mit PHP, HTML und MySQL kentnissen wird/werden gesucht
Hallo Leute, Ich habe derzeit eine Idee für ein Browsergame kann sie aber alleine nicht so schnell durchsetzten und suche deshalb einen oder mehrere Partner. Wie man dem Title schon entnehmen kann suche ich einen oder mehrere Programmierer die PHP, HTML...
[Projekte]von BenbeatboxFan
0
373
08.03.2013, 20:45
BenbeatboxFan
Rürop sparen oder selber sparen?
Ich überlege gerade wie ich meine Rente zusammen sparen könnte. Gehe ich von 200,- EUR monatlich aus, einer Erhöhung der Sparrate um 5% pro Jahr und von 32 Jahren Sparzeit ausgehend, so erreiche ich unter Abzug von 30% Steuern auf die Zinsen und einem...
von mgutt
5
2.379
22.10.2010, 09:50
finanz_profi
Strom sparen = Sprit sparen?
https://www.youtube.com/watch?v=8hEeMOmlNoU...
von mgutt
0
208
09.06.2014, 16:29
mgutt
Autokennzeichen abfragen
Hi habe vor zwei Wochen auf der Autobahn eine Frrau gesehn die mir nicht mehr aus dem Kopf geht. Habe nur ein Autokennzeichen von ihr. Nun wollte ich euch mal fragen ob es eine Internetseite gibt oder sowas wo man die Halterin des Fahrzeugs ermitteln...
von Honda crx1
39
11.655
20.12.2007, 20:13
Flo-JDM-EE9
[Hilfe] Tipp: Thumbnails und Seiten-Cache zurücksetzen
Methode 1 - Kommandozeile Laut der Seite soll es ab MW 1.21 mit"php pureList.php --all" gehen: https://www.mediawiki.org/wiki/Manual:PurgeList.php Es wurde bei mir zwar "Done!" angezeigt, aber es wurde bei mir kein Cache...
von mgutt
0
92
30.01.2015, 23:24
mgutt
scuid - HTTP, HTTPS & FTP Proxy Cache Script
Link:...
von mgutt
0
2.220
28.11.2007, 00:59
mgutt
Web-/Softwareentwickler (PHP/MySQL, w/m)
Sie haben praktische Erfahrungen im Webdevelopment, Interesse am eMarketing und scheuen sich nicht davor, sich sowohl in einem Team als auch im internationalen Kundenkontakt einzubringen? Dann sollten wir uns kennen lernen! Die Insecon eMarketing GmbH...
[Jobs & Stellenangebote]von Britta75
0
526
03.11.2011, 10:03
Britta75
Suche PHP/MySQL Programmierer
Guten Tag, Wir ich möchte mich und meine Leute mal vorstellen. Wir sind eine Spiele gemeinschaft und machen dies aus Jucks. Doch wir möchten etwas größeres aufbauen in der Egoshooter welt. Darum Planen wir eine "Liga" zu gründen. Mometane...
[Projekte]von backtrack
0
335
08.12.2013, 21:47
backtrack
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |