Caching - Leistungsverbesserung bis zu Faktor 30

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Caching - Leistungsverbesserung bis zu Faktor 30

Beitrag von kummer » Di 16. Okt 2007, 16:20

hi all

ich habe im rahmen einer überarbeitung der front_content.php zunächst einmal einen caching-mechanismus erstellt, der eine erhebliche leistungsverbesserung bringen soll. auf meinem rechner dauert die durchschnittliche ausgabe eines artikels...

ohne caching: 100 - 150 ms
mit caching: ca. 3 ms

je nach dem, wie gut die einzelnen module programmiert sind, kann die leistungsverbesserung sogar noch höher ausfallen.

dem einwand, die anwender würden nicht wissen, ob das caching nun eingeschaltet sein darf oder nicht, bin ich - hoffentlich - zuvor gekommen. und zwar kann in jedem modul die maximalcachedauer für das jeweilige modul festgelegt werden. verwendet wird schliesslich die kleinste gesetzte cachedauer, die in einem modul gesetzt worden ist, das im template verwendet wird. darf die ausgabe eines moduls gar nicht gecached werden (z.b. formularmodul), wird dort einfach der wert auf 0 gsetzt.

in der aktuellen version wird der cache nicht gelöscht, wenn änderungen an den kategorien vorgenommen werden. das müsste vorerst manuell gemacht werden (in der tabelle con_cache). sobald das ganze hinreichend getestet ist, werde ich das noch ergänzen.

nun bin ich also auf der suche nach leuten, die das ganze mal testen würden. ohne modrewrite läuft das ganze - mindestens bei mir - soweit gut. für modrewrite habe ich zwar vorgesorgt, allerdings noch nicht getestet, da ich keine solche installation am laufen habe.

die erweiterung findet sich hier: http://www.editio.ch/cms/front_content. ... uleView=46

feedback ist gefragt. aber achtung: es ist eine version zum testen und für mutige meinetwegen auch in der produktion. für all jene, die contenido gerade mal knapp zum laufen bringen, ist die erweiterung noch nicht geeignet.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

schlaucher
Beiträge: 444
Registriert: Mi 14. Sep 2005, 10:38
Wohnort: Karlsruhe
Kontaktdaten:

Re: Caching - Leistungsverbesserung bis zu Faktor 30

Beitrag von schlaucher » Mi 17. Okt 2007, 09:28

kummer hat geschrieben:hi all

feedback ist gefragt. aber achtung: es ist eine version zum testen und für mutige meinetwegen auch in der produktion. für all jene, die contenido gerade mal knapp zum laufen bringen, ist die erweiterung noch nicht geeignet.

gruss,
andreas
Hir kummer,

hier mein erstes Feedback:
ich erhalte folgende Fehlermeldung:
Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /export/apache/www/test-go4support-de/contenido/classes/atelierq.authentication.class.inc.php on line 28

Warning: mysql_real_escape_string(): A link to the server could not be established in /export/apache/www/test-go4support-de/contenido/classes/atelierq.authentication.class.inc.php on line 28
Das liegt wohl daran, dass mein WEB-Server und mein MySQL Server auf unterschiedlichen Servern läuft. Mach mich mal auf die Suche :wink:

Gruß
schlaucher

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mi 17. Okt 2007, 09:41

@schlaucher: Ersetze mal in der Zeile 28 der Klasse:

Code: Alles auswählen

		$login = mysql_real_escape_string($login);
durch

Code: Alles auswählen

		$login = mysql_real_escape_string($login, $this->db->link_id());
Evtl. hilft das bereits weiter.

schlaucher
Beiträge: 444
Registriert: Mi 14. Sep 2005, 10:38
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von schlaucher » Mi 17. Okt 2007, 09:53

Dodger77 hat geschrieben:@schlaucher: Ersetze mal in der Zeile 28 der Klasse:

Code: Alles auswählen

		$login = mysql_real_escape_string($login);
durch

Code: Alles auswählen

		$login = mysql_real_escape_string($login, $this->db->link_id());
Evtl. hilft das bereits weiter.
Nein, das hat nicht geholfen. Ich verstehe noch nicht, warum er die Datenbank über den lokalen Socket verbinden will. :cry:

Gruß
schlaucher

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Do 18. Okt 2007, 10:23

ich kann dein problem inzwischen reproduzieren und werde nach einer lösung suchen. ich gebe hier bescheid, wenn ich soweit bin.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Do 18. Okt 2007, 17:13

ich habe das problem gefunden und gelöst. eine neue version findet sich hier: http://www.editio.ch/cms/front_content. ... uleView=47

die datenbank hat sich auch ein wenig geändert. falls du es noch installiert hast, musst du die tabelle löschen und neu erstellen.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

schlaucher
Beiträge: 444
Registriert: Mi 14. Sep 2005, 10:38
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von schlaucher » Fr 19. Okt 2007, 09:36

kummer hat geschrieben:ich habe das problem gefunden und gelöst. eine neue version findet sich hier: http://www.editio.ch/cms/front_content. ... uleView=47

die datenbank hat sich auch ein wenig geändert. falls du es noch installiert hast, musst du die tabelle löschen und neu erstellen.

gruss,
andreas
Hi kummer,

so, die neuen Versionen sind eingespielt und es kommen keine Fehlermeldungen mehr. :D

Aber !!!!
Ich habe die Einträge aus dem output.php mal in das normale "Text HTML" Modul eingefügt. Nachdem ich die Seite aktualisiert habe, werden nun sämmtliche Menüeinträge auf Deine Seite umgeleitet :?:

Hast Du Deine URL irgenwo fest eingetragen???

Schau mal auf http://test.go4support.de

Gruß
schlaucher

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 19. Okt 2007, 09:57

:oops:

sorry about...

du findest diesen eintrag in der neuen front_content.php. siehe...

Code: Alles auswählen

<?php

include_once('../contenido/classes/atelierq.frontend.class.inc.php');
include_once('../contenido/classes/atelierq.authentication.class.inc.php');

include_once ('config.php'); 
include_once ($contenido_path . 'includes/startup.php');

$frontend = new atqFrontend(
	true, // Caching ein/aus
	true, // Links umschreiben
	true, // Erste Ebene unterdrücken
	true, // Sprache verwenden
	true, // Cacheunterdrückung über Parameter nocache erlauben
	true, // Ausgabe der detaillierten Ausführungsdaueranalyse zulassen
	'http://www.editio.ch/'
	);

if (!$frontend->cacheOutput) {
	
	$idart = $frontend->getId('idart');
	$lang = $frontend->getId('lang');
	$idcat = $frontend->getId('idcat');
	
	include_once('front_content.standard.php');
	$frontend->createCache(24 * 60 * 60);

}

?>
du musst auf der zeile 16 deine url angeben, anstatt meine. der eintrag ist erforderlich, da sonst noch weitere abfragen auf das rdbms erforderlich wären.

das ganze ist halt noch in entwicklung. die nächsten schritte werden sein:

(1) weiterleitungen nicht mehr an den browser senden, sondern gleich auswerten (dann bleibt im falle einer weiterleitung die url im browser gleich)

(2) wenn ein eintrag in der con_code besteht, diese auswerten, anstatt front_content.standard.php auszuwerten.

(3) verbesserung des url-rewrites

(4) noch ungewiss, was sonst noch alles kommen wird.

ich bin froh, wenn sich ein tester findet, der das ganze auf herz und nieren prüft. bleib also dran... :wink:

ach ja, wichtig noch: wenn ein modul nie gecached werden soll, fügst du bei diesem untenstehenden code an den anfang (das unterdrückt dann auf allen seiten das caching, in denen das modul eingesetzt wird):

Code: Alles auswählen

if (isset($GLOBALS['frontend']) && is_object($GLOBALS['frontend'])) {
	$GLOBALS['frontend']->setMaxCachingPeriod(0);
}
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

schlaucher
Beiträge: 444
Registriert: Mi 14. Sep 2005, 10:38
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von schlaucher » Fr 19. Okt 2007, 13:31

kummer hat geschrieben: ich bin froh, wenn sich ein tester findet, der das ganze auf herz und nieren prüft. bleib also dran...
so, der Domainname stimmt nun, aber alle Links sind nun "modrewrite". Hab ich da was überlesen? Die Installation ist ein Standard contenido, keine MR Version.

Gruß
schlaucher

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 19. Okt 2007, 16:46

schau dir die front_content.php an. dort kannst du einstellen, ob du die links umschreiben möchtest oder nicht. dort kannst du auch das caching ein- oder ausschalten. wenn du modrewrite nutzen möchtest, musst du einfach die .htaccess-datei in das root-verzeichnis legen. das findet sich dort, wo du die übrigen dateien gefunden hast (http://www.editio.ch/cms/front_content. ... 47&class=5).

mit dieser suite hast du modrewrite schon mit dabei. du kannst es einfach ausschalten, wenn du es nicht nutzen willst.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

pun
Beiträge: 31
Registriert: Mi 31. Mai 2006, 15:09
Kontaktdaten:

Beitrag von pun » Sa 5. Jan 2008, 16:20

Hallo,

ich habe auf meinem localhost Testsystem das Caching Modul installiert. Funktioniert so weit prima. Lediglich das modrewrite will nicht so wie es soll.

Dir URL wird zwar umgeschrieben aber anschließend bekomme ich eine 404 ausgeliefert.
Die Pfadangabe die sich aus front_content.php und .htaccess zusammenbaut scheint auch zu stimmen.

Wo könnte ich anfangen nach einem Fehler zu suchen?

Danke für Tipps,
Daniel

Raphael
Beiträge: 39
Registriert: Do 24. Okt 2002, 17:01
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Raphael » So 6. Jan 2008, 20:04

Hallo,
ich finde dieses Thema sehr interessant und verfolge mit Spannung was hier passiert und das aus zwei Gründen:

a) die Performancesteigerung
b) das Caching

Zu b) Ich überlege schon seit einiger Zeit, ob Inhalte aus Redaktionssystemen wirklich von den Suchmaschinen gefunden werden, da sie ja aus der Datenbank generiert werden.
Aus diesem Grund habe ich mir gedacht, dass das Caching bzw. das auf dem Server abgelegte Abbild der jeweiligen Seite eine Lösung hierfür sein könnte. Das heißt, dass gecachte Seiten von den Suchmaschinen gefunden werden können.

Was meint ihr dazu, liege ich hier richtig?

Gruß,
Raphael

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 7. Jan 2008, 09:35

für eine suchmaschine spielt es keine rolle, wie die inhalte erzeugt werden. die daten werden in jedem fall vom server bereit gestellt. unabhängig davon, ob die daten direkt vom dateisystem oder aus einer datenbank stammen. da brauchst du dir keine sorgen zu machen. ein bot kann gar nicht feststellen, ob die daten dynamsich generiert sind oder nicht.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

pun
Beiträge: 31
Registriert: Mi 31. Mai 2006, 15:09
Kontaktdaten:

Beitrag von pun » Mo 7. Jan 2008, 11:27

Hallo kummer,

gibt es für mein Problem mit dem modrewrite einen Tipp von Dir/Ihnen?
(siehe oben)
Würde mich sehr freuen wenn das ganze Modul funktionieren würde.

Gruß, Daniel

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 7. Jan 2008, 11:29

pun hat geschrieben:Dir URL wird zwar umgeschrieben aber anschließend bekomme ich eine 404 ausgeliefert.
Die Pfadangabe die sich aus front_content.php und .htaccess zusammenbaut scheint auch zu stimmen.
hallo daniel

wo liegt die htaccess? wenn du sie in das root der domäne legst, sollte es funktionieren. wenn du sie im cms-verzeichnis hast, müsstest du die angaben in der front_content.php überprüfen.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Gesperrt