gambler
Themenersteller
Student
Guru (101 Beiträge)
HTML komprimieren mittels PHP
Hi,
ich bräuchte grade mal einen Denkanstoß!
Per PHP erzeuge ich mir eine Cache-Datei im HTML-Format:
<?php
// Pfad und Name der Cache-Datei
$cacheDatei = "cache.htm";
// Gültigkeitsdauer in Sekunden
$cacheDauer = 3600;
// Prüfen ob Cache-Datei existiert und noch gültig ist
if (file_exists($cacheDatei) &&
(time() - filemtime($cacheDatei)) < $cacheDauer)
{
// statt dynamische Page generieren zu lassen
// includen wir statische Cache-Datei
include($cacheDatei);
exit();
}
// Der interne Ausgabe-Puffer wird aktiviert
ob_start();
/*Inhalt der angeforderten Seite*/
//Puffer leeren und in Cache-Datei schreiben
file_put_contents($cacheDatei, ob_get_flush());
Soweit so gut...da ich nicht viele Datenbankanfragen oder ressourcenlastige Funktionen in meinen PHP-Dateien ausführe, bringt mir die nun reine HTML-Cache-Datei nicht viel, außer zusätzlichen Speicherplatz der benötigt wird für die Cache-Datei. Eigentlich wollte ich nun zusätzlich zu dieser Cache-Datei noch eine komprimierte gzip-Version dieser statischen Datei erstellen lassen, leider fällt mir grade nicht ein, wie man das in PHP am besten umsetzt.
Ich stelle mir das halt so vor:
file_put_contents($cacheDatei, ob_get_flush());
//Erzeuge gzip-Datei($cacheDatei)
Kann mir hier jemand mal bitte auf die Sprünge helfen und sagen, wie ich das am sinnvollsten umgesetzt bekomme?
Danke schon mal für Eure Antworten ;
Gruß Stephan
Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung
UFOMelkor
Student
Content Meister (350 Beiträge)
Raptor
IT-Student
Content Gott (1013 Beiträge)
gambler
Student
Guru (101 Beiträge)
Danke für die Tipps. Jetzt klappt es schon mal, dass eine cache.htm und eine cache.htm.gz erstellt werden.
Ein weiteres Problem was mich nun beschäftigt, ist die Frage, ob bezogen auf den folgenden Code, der Webserver die unkomprimierte cache.htm Datei sendet, falls ein Browser die Seite aufruft, der gzip nicht unterstützt?
<?php
//Pfad und Name der Cache-Dateien
$cacheDatei="cache.htm";
$cacheDateiGzip="cache.htm.gz";
//Gültigkeitsdauer in Sekunden
$cacheDauer=3600;
//prüfen ob Cache-Dateien existieren und gültig sind
if (file_exists($cacheDatei)&&file_exists($cacheDateiGzip)
&&(time()-filemtime($cacheDatei))<$cacheDauer)
{
//statt Page dynamisch zu generieren wird
//statisch komprimierte HTML-Datei eingebunden
header("Content-Encoding: gzip");
include($cacheDateiGzip);
exit();
}
// [...]
Da ich ja explizit die cache.htm.gz Datei include und auch der Header mit gzip Angabe ist, wird der Webserver, wohl nicht automatisch die unkomprimierte Datei senden, wenn der Browser Komprimierung nicht unterstützt oder?
Kann man eventuell mit einer Funktion überprüfen, ob der Browser gzip unterstützt? Ich bin leider nicht so gut in PHP, aber ich würde mir das so vorstellen:
<?php
//Pfad und Name der Cache-Dateien
$cacheDatei="cache.htm";
$cacheDateiGzip="cache.htm.gz";
//Gültigkeitsdauer in Sekunden
$cacheDauer=3600;
//prüfen ob Cache-Dateien existieren und gültig sind
if (file_exists($cacheDatei)&&file_exists($cacheDateiGzip)
&&(time()-filemtime($cacheDatei))<$cacheDauer)
{
if(BrowserUnterstütztGzip == false)
{
include($cacheDatei);
exit();
}
//statt Page dynamisch zu generieren wird
//statisch komprimierte HTML-Datei eingebunden
header("Content-Encoding: gzip");
include($cacheDateiGzip);
exit();
}
// [...]
Ich habe bereits mit ob_gzhandler() es versucht, aber bekomme das irgendwie nicht so hin.
Tipps sind stehts willkommen...
Gruß Stephan
Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung
Raptor
IT-Student
Content Gott (1013 Beiträge)
doc4pc
Angestellt
Fortgeschrittener (57 Beiträge)
Du kannst auch ob_start gleich zum zippen bewegen:
ob_start("ob_gzhandler");
Das ist vielleicht minimal schneller als ein extra aufruf zum Zippen, habe aber noch nicht nachgemessen.
LG
Andreas
Stempel bestellen beim Profi:
http://stempelprofi.de
http://stempel-kahle.de
gambler
Student
Guru (101 Beiträge)
doc4pc schrieb:
Du kannst auch ob_start gleich zum zippen bewegen:
ob_start("ob_gzhandler");
Das ist vielleicht minimal schneller als ein extra aufruf zum Zippen, habe aber noch nicht nachgemessen.
LG
Andreas
Hi Andreas,
das geht natürlich auch, aber dann ist doch im Puffer schon der komprimierte Content?! Genau das wollte ich nicht, sondern ich wollte den Content sowohl unkomprimiert als auch komprimiert in jeweils einer Datei speichern. Ich wollte halt sicherstellen, dass ein Besucher meiner Website die unkomprimierte Fassung erhält, wenn sein Browser kein gzip unterstützt. Um ehrlich zu sein, weiß ich nicht ob das überhaupt notwendig ist - gibt es noch Browser die gzip von Haus aus nicht unterstützen?
Gruß Stephan
Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung
Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren