<we:cache></we:cache>

Dieses Tag dient dazu den umschlossenen Inhalt in einem Memory Cache abzulegen. Mit dem Attribut customer kann gesteuert werden ob der Inhalt sich pro Kunde unterscheiden kann. Das Attribut id ist nötig um den Inhalt eindeutig zu identifizieren - achte darauf das für die Berechnung der id nicht mehr Zeit verwendet wird wie für die Ausgabe.

Bei dem Einsatz eines Caches kann es immer zu Anzeigen kommen, die bereits nicht mehr aktuell sind. Damit der Cache invalidiert werden kann sobald sich ein Datensatz ändert muß sich die id von der letzten unterscheiden. Siehe Beispiel für die Implementierung eines Navigations-Caches unten.

ab Version 8.1
Endtag erforderlich ja
Pflichtattribute

Attribute

id Pflichtfeld: nein

Die ID bezeichnet die Daten die im Cache abgelegt werden eindeutig. Haben unterschiedliche Daten die gleiche ID, werden ggfs. die falschen Daten angezeigt.

ab Version 8.1
Typ string
Standardwert -
ttl Pflichtfeld: nein

ttl (time to live) gibt die Zeit in Sekunden an, die ein Eintrag im Cache vorgehalten werden soll. Nach Ablauf dieser Zeit, wird der Eintrag verworfen und erneut berechnet.

Wird die Zeit zu hoch angesetzt kann es passieren das Änderungen nicht oder sehr spät erscheinen. Ist der Wert zu gering, werden Daten immer neu berechnet, d.h. der Cache wird nicht verwendet. Für viele Daten ist ein Wert von 5 Minuten (300) ein guter Kompromiss. Für langlebige Daten (bzw. header) kann der Wert auch auf 1 Stunde und mehr gesetzt werden.

Typ number
Standardwert -
customer Pflichtfeld: nein

Soll beim Cache eine Unterscheidung je nach Kunde gemacht werden, d.h. unterschiedliche Kunden bekommen abweichende Daten angezeigt, dann ist der Wert hier auf true zu setzen. Sehen alle Kunden das gleiche, kann der Wert auf false gesetzt werden.

Typ boolean
mögliche Werte true, false
Standardwert true

Syntax

<we:cache id="" ttl="" customer="true|false">
...
</we:cache>						

Beispiele

Beispiel #1 - Cache für alle Seiten header

Durch den hier vorgestellten Cache wird die Datenbank etwas entlastet.

Da das Header für alle Anfragen nicht nach einem Kunden unterscheidet, kann dadurch auch der Memory-Cache entlastet werden.

Code
<we:cache id="header" ttl="600" customer="false">
<we:js id="123"/>
<we:css id="3455"/>
.....
</we:cache>

Beispiel #2 - Cache für die Navigation

Code
<?php
$naviID=123;
$fmod = (@filemtime(we_navigation_cache::getNavigationFilename($naviID)) ?: time()) % 10000;
$id = 'navi_' . $naviID . '_' . $fmod;
?>
<we:cache id="$id" customer="true" ttl="300">
<we:navigation navigationname="default" parentid="$naviID" />
[...]
<we:navigationWrite navigationname="default"/>
</we:cache>

Hilf mit!

Hast Du eine Ergänzung für die Tag-Referenz, dann werde bitte aktiv.
Entweder über einen Eintrag unter qa.webedition.org oder einfach formlos per E-Mail an websites@webedition.org.

Fehler oder Erweiterungswünsche zu webEdition selbst bitte über qa.webedition.org melden.

powered by webEdition CMS