SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > Apache HTTP-Server

Apache HTTP-Server Alles was Ihr über den Apache diskutieren möchtet, gehört hierein

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.02.2008, 11:00:56
bazubi bazubi ist offline
Junior Member
 
Registriert seit: Jan 2004
Beiträge: 496
[Howto] Webseiten beschleunigen mit mod_cache

Hallo,

ich durfte gerade das Apache Caching für eine PHP Seite aktivieren. Ich dachte mir das ist vielleicht auch für andere nützlich und habe mal ein Howto geschreiben. Siehe hier:

http://www.pgk-dienstleistungen.de/d...mit__mod_cache

Gruß
bazubi

P.S. Ich habe das Howto auch schon in anderen Foren verlinkt, ich hoffe mal das wird mir in diesem Fall nicht als Crossposting ausgelegt. Ist ja keine Frage, mehr ein Hinweis :-)
__________________
Kleiner Hinweis am Rande: Es gibt keine if-Schleifen. Es gibt nur if-Verzweigungen und for/[do]/while-Schleifen.
Mit Zitat antworten
  #2  
Alt 25.02.2008, 11:42:28
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: [Howto] Webseiten beschleunigen mit mod_cache

nein, von meiner seite gibts ein ok, vielleicht ist das ja sogar was für das php-praxisbuch?
Mit Zitat antworten
  #3  
Alt 25.02.2008, 11:46:27
bazubi bazubi ist offline
Junior Member
 
Registriert seit: Jan 2004
Beiträge: 496
AW: [Howto] Webseiten beschleunigen mit mod_cache

Klar, gerne! Kopiert es einfach rüber.
Ein Link auf das Originaldokument wäre schön, wenn das möglich ist.
__________________
Kleiner Hinweis am Rande: Es gibt keine if-Schleifen. Es gibt nur if-Verzweigungen und for/[do]/while-Schleifen.
Mit Zitat antworten
  #4  
Alt 25.02.2008, 19:51:39
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 39
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: [Howto] Webseiten beschleunigen mit mod_cache

Zitat:
Zitat von feuervogel Beitrag anzeigen
...vielleicht ist das ja sogar was für das php-praxisbuch?
Das Praxisbuch ist eine in sich geschloßene Dokumentation...
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #5  
Alt 25.02.2008, 20:22:53
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 51
Beiträge: 1.276
AW: [Howto] Webseiten beschleunigen mit mod_cache

Hi,

wie |Coding schon sagte ist das Praxisbuch eine geschlossene Dokumentation, wo wir zusätzlichen Inhalt so ohne weiteres nicht hinzufügen können, da es identisch mit der Buchfassung ist.

Leider haben wir momentan auch keinen anderen Bereich wo wir Deinen Beitrag veröffentlichen könnten, obwohl er wirklich gut ist. So schade ich es finde aber leider kann ich da nur den Link im Forum anbieten. Gerne kannst Du aber den kompletten Beitrag hier im Apache-Forum posten, mich würde es freuen.

Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #6  
Alt 26.02.2008, 10:06:59
bazubi bazubi ist offline
Junior Member
 
Registriert seit: Jan 2004
Beiträge: 496
AW: [Howto] Webseiten beschleunigen mit mod_cache

Hallo,

ok, dann poste ich das einfach hier:


Der Apache lässt sich bekanntermaßen durch viele Module erweitern. Eines davon ist "mod_cache". Damit lassen sich dynamisch generierte Inhalte, wie sie z.B. Content Management Systeme generieren, zwischenspeichern. Dies sorgt für eine deutliche Verzögerung der Auslieferungszeiten. Im nachfolgenden Artikel zeigen wir Ihnen wie man dem Apache das Caching beibringt.

Seit Apacheversion 2.2.x gilt mod_cache offiziell als stabil und seine Verwendung im produktiven Umfeld wird empfohlen. Die meisten Linuxdistributionen liefern mod_cache schon seit einiger Zeit mit. Die Installation wird in diesem Artikel anhand von Ubuntu Linux 7.10 erklärt. Prinzipiell ist die Anleitung aber auch auf andere Distributionen anwendbar.

Zwar liefert Ubuntu 7.10 mod_cache zusammen mit dem Apache 2.2 bereits mit, allerdings ist es zunächst noch deaktiviert. Zur Aktivierung erstellt man einfach passende Symlinks im Verzeichnis /etc/apache2/mods-enabled/.

Code:
sudo ln -s /etc/apache2/mods-available/cache.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/disk_cache.* /etc/apache2/mods-enabled
Startet man den Apache nun mittels sudo /etc/init.d/apache2 restart, verfügt der Apache über Cachingfähigkeiten.

Jetzt muss man noch konfigurieren was der Apache cachen soll und wohin die Daten gespeichert werden soll.

Hierzu sucht man sich den passenden <Virtualhost> Abschnitt der Apacheconfiguration heraus und fügt folgends hinzu:
Code:
CacheEnable disk /
CacheRoot /var/cache/apache2/vhostX/
CacheRoot gibt dabei an wohin der Apache die gecachten Daten speichern soll. Diese Verzeichniss muss natürlich für den Apache beschreibbar sein. Damit der Apache die Festplatte des Servers nicht mit Daten überfrachtet sollte man dafür sorgen das der Cache regelmäßig zurückgestutzt wird. Hierfür kommt das Programm htcacheclean zum Einsatz. Diese kann man z.B. über einen Cronjob regelmäßig ausführen lassen. Es reduziert die Größe des Caches auf den angegeben Wert. Folgender Aufruf würde z.B. den Cache unter /var/cache/apache2/vhostX/ auf 100 MB geschränken.

Code:
htcacheclean -p /var/cache/apche2/vhostX/ -l 100M
Nach einem erneuten Neuladen des Apache fängt dieser Automatisch an die Daten zu cachen. Allerdings wird er bisher nur reine HTML Seiten und Grafiken cachen. Das bringt keinen wirklichen Performancegewinn. PHP Seiten wirden bisher noch nicht gecacht, da der Apache nicht ermitteln kann wann eine entsprechende Seite zuletzt bearbeitet wurde.

Diese Information geht nämlich nach dem Durchlauf der PHP Datei durch den PHP Compiler / Interpreter verloren. Um trotzdem ein Caching zu erreichen muss man diese Information manuell ausgeben. Dies ist der Punkt an dem es knifflig wird. Zwar ist es recht einfach einen "Last Modified" Header per PHP zu senden (siehe weiter im Artikel), allerdings ist es gar nicht so einfach zu ermitteln wann eine PHP Seite sich geändert hat.

Bei einer PHP Seite die hauptsächlich statischen Content enthält und nur Teile des Layout, wie z.B. das Menü, per include nachlädt ist das noch recht einfach. Man nimmt einfach das Änderungsdatum der Datei. In PHP kann man das mit fileatime ermitteln.

Bei einer PHP Seite die Daten aus einer Datenbank lädt, wie z.B. das Script das für das Anzeigen dieses Artikels verantwortlich ist, wird das schon nicht mehr so einfach. Der Content ändert sich zwar mit jedem neuen Datensatz in der Datenbank, die eigentliche Datei aber nicht. In diesem Fall ist es angebracht z.B. das Datum des Artikels als Änderungsdatum zu nehmen.

Hat man schlussendlich herausgefunden, wie man das Änderungsdatum definiert kann man es nun dem Apache mitteilen:

Code:
<?php
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_mod) . ' GMT');
?>
Hierbei ist $last_mod das Änderungsdatum im Unixtimestamp-Format.

Darüber hinaus ist es natürlich auch noch sinnvoll dem Apache mitzuteilen wie alt seine Kopie der Seite maximal sein darf bevor er eine aktuelle Version anfordern muss. Dies funktioniert über den Max-Age Header
Code:
<?php header('Cache-Control: public,max-age=' . (3600 * 168)); ?>
Die Angabe (3600 * 168) bedeutet in diesem Fall eine maximales Alter von einer Woche.

Sobald dies in den PHP Dateien enthalten ist, cacht der Apache auch PHP Dateien. Je nachdem wie komplex eine PHP Datei ist, kann man mit dieser Methode die Auslieferungszeit um ca. 30% erhöhen.
__________________
Kleiner Hinweis am Rande: Es gibt keine if-Schleifen. Es gibt nur if-Verzweigungen und for/[do]/while-Schleifen.
Mit Zitat antworten
  #7  
Alt 28.02.2008, 09:39:08
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 39
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: [Howto] Webseiten beschleunigen mit mod_cache

Moin!

Damit der Thread hier nicht in Vergessenheit gerät, habe ich ihn mal oben festgemacht.
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #8  
Alt 09.06.2008, 23:17:10
smartweb smartweb ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 56
Beiträge: 60
AW: [Howto] Webseiten beschleunigen mit mod_cache

Wer nicht die Möglichkeit hat, mit dem Apache Modul zu Cachen, z.B. weil er keinen Zugriff auf die Apache Konfiguration hat, oder der Webhosting Anbieter es nicht unterstüzt, kann das auch direkt mit php erledigen:

Code:
$cache_expire = 300; // 5 mins

$cachefile = md5($_SERVER["REQUEST_URI"]);

if (file_exists("cache/".$cachefile)) {
 $fileage = time() - filemtime("cache/".$cachefile);
}

/* check for last access - if file is older than $cache_expire, recreate file! */
if ( (file_exists("cache/".$cachefile)) && ( $fileage > $cache_expire)) {
 unlink("cache/".$cachefile); 
} else {
 $page = fread(fopen("cache/".$cachefile,"r"),filesize("cache/".$cachefile));
   print $page;
   exit();
}

ob_start();

... [ das eigentliche script... ]...

$page = ob_get_contents();
ob_end_clean();

$cf = fopen("cache/".$cachefile,"w");
fputs($cf,$page);
fclose($cf);
print $page;
__________________
Florian Wiessner

Smart Weblications GmbH
Martinsberger Str. 1
D-95119 Naila

fon.: +49 700 762 789 32 - 0,12 EUR/Min*
fax.: +49 700 762 789 32 - 0,12 EUR/Min*
24/7: +49 900 311 886 00 - 1,99 EUR/Min*
http://www.smart-weblications.de

--
Sitz der Gesellschaft: Naila
Geschäftsführer: Florian Wiessner
HRB-Nr.: HRB 3840 Amtsgericht Hof
*aus dem dt. Festnetz, ggf. abweichende Preise aus dem Mobilfunknetz
Mit Zitat antworten
  #9  
Alt 10.06.2008, 10:17:10
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: [Howto] Webseiten beschleunigen mit mod_cache

Zitat:
Zitat von smartweb Beitrag anzeigen
Wer nicht die Möglichkeit hat, mit dem Apache Modul zu Cachen, z.B. weil er keinen Zugriff auf die Apache Konfiguration hat, oder der Webhosting Anbieter es nicht unterstüzt, kann das auch direkt mit php erledigen:

Code:
$cache_expire = 300; // 5 mins

$cachefile = md5($_SERVER["REQUEST_URI"]);

if (file_exists("cache/".$cachefile)) {
 $fileage = time() - filemtime("cache/".$cachefile);
}

/* check for last access - if file is older than $cache_expire, recreate file! */
if ( (file_exists("cache/".$cachefile)) && ( $fileage > $cache_expire)) {
 unlink("cache/".$cachefile); 
} else {
 $page = fread(fopen("cache/".$cachefile,"r"),filesize("cache/".$cachefile));
   print $page;
   exit();
}

ob_start();

... [ das eigentliche script... ]...

$page = ob_get_contents();
ob_end_clean();

$cf = fopen("cache/".$cachefile,"w");
fputs($cf,$page);
fclose($cf);
print $page;
stimmt, warum nicht ausgabe-caching eine template-engine erledigen lassen, wenn man es selbst machen kann (obwohl das ja fast nichts mit dem eigenlichen thema zu tun hat, nämlich dass die php-scripte nicht jedesmal neu compiliert werden müssen).
Mit Zitat antworten
  #10  
Alt 10.06.2008, 11:27:08
smartweb smartweb ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 56
Beiträge: 60
AW: [Howto] Webseiten beschleunigen mit mod_cache

Nun das ist so, dass die Scripte dadurch trotzdem beschleunigt werden, selbst wenn sie _geparst!_ werden (bei PHP wird nicht kompiliert, es ist ein Interpreter) da man sich eventuelle DB-Abfragen etc spart.
__________________
Florian Wiessner

Smart Weblications GmbH
Martinsberger Str. 1
D-95119 Naila

fon.: +49 700 762 789 32 - 0,12 EUR/Min*
fax.: +49 700 762 789 32 - 0,12 EUR/Min*
24/7: +49 900 311 886 00 - 1,99 EUR/Min*
http://www.smart-weblications.de

--
Sitz der Gesellschaft: Naila
Geschäftsführer: Florian Wiessner
HRB-Nr.: HRB 3840 Amtsgericht Hof
*aus dem dt. Festnetz, ggf. abweichende Preise aus dem Mobilfunknetz
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Besonderheiten bei russischen Webseiten scara Off Topic Area 0 17.02.2006 10:35:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:01:22 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt