<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 | 9.0.0 (Barrhorn) |
Endtag erforderlich | nein |
Pflichtattribute |
Attribute
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 | 1.3.0.0 |
Typ | string |
Standardwert | - |
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.
ab Version | 1.3.0.0 |
Typ | number |
Standardwert | - |
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.
ab Version | 1.3.0.0 |
Typ | boolean |
mögliche Werte | true, false |
Standardwert | true |
Syntax
<we:cache id="" ttl="" customer="true|false"/>
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
<?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.