Mich wundert immer wieder, wie unbekannt einer meiner Lieblings-CustomTags ist: cf_supercache. Durch diesen Tag kann man dank des extrem performanten in-memory-caching ExecutionTimes im niedrigen zweistelligen Millisekunden-Bereich erreichen…Das Prinzip ist gleichermaßen einfach wie genial: statt klassisches Filecaching durchzuführen (was auch angeboten, aber von mir nicht derart angepriesen wird) , speichert cf_supercache die zu cachenden Nutzdaten, also nur der HTML-Content, der zum Browser geschickt werden soll, im Server-Scope.
Das Einbinden des Tags ist trivial:
<cf_supercache …..>
[… jede Menge CF-Tags, die gaaanz viel Zeit benötigen …]
</cf_supercache>
Beim ersten Durchlauf werden die CF-Tags innerhalb von cf_supercache normal ausgeführt, der Wert von thisTag.generatedContent aber direkt danach in den Server-Scope geschrieben. Beim nächsten Aufruf wird, sofern der Expires-Wert nicht abgelaufen ist, der Inhalt aus dem Server-Scope, also direkt aus dem RAM, gelesen. ALLE CF-Tags innerhalb von cf_supercache werden dann übersprungen. Ellenlanges Stringparsing, Mega-Queries – alles! 🙂
Der Effekt ist wirklich gigantisch. Netter Nebeneffekt: die gespeicherten Inhalte können dank des Argumentes “stripWhiteSpace” direkt von überflüssigen Leerzeilen befreit werden.
cf_supercache gibt es entweder in der Taggallery oder hier. Ich habe hier eine modifizierte Version hochgeladen, da die originale attributes.name als Tag-Argument nutzt. Da dies in CF > 4.01 wegen der Dot-Notation nicht mehr erlaubt ist, habe ich “attributes.name” durch “attributes.cacheName” ersetzt.
bringt bei queries nur dann etwas, wenn die syntax immer gleich ist, oder?
hi urs,
nein, ganz im gegenteil. du definierst einen kompletten teil des templates als “zu cachenden bereich” und vergibst für diesen eine eindeutige ID und verfallzeit.
ALLES, was innerhalb des tags steht, wird übersprungen, wenn der zeitraum, der mit cachedwithin angegeben wird, noch nicht abgelaufen ist. das hat mit der syntax von sql-statements nichts zu tun – ich könnte ja auch bereiche cachen, in denen nur mit cfloop gearbeitet wird.
bye,
marcus
Sieht mir ja ganz nach ‘ner Kopie von cfa_generatedcontentcache aus. 😉
hi uwe,
stimmt, vom prinzip her sind beide tags verdächtig ähnlich. nun sind beide ja hauseigene macromedia-entwicklungen – da ist sicherlich nicht ausgeschlossen, dass sich tischnachbarn ideen abgucken 🙂
gut ist halt, das cf_s auch ohne spectra funktioniert.
bye,
marcus
Ach so. Wusst’ ich gar nicht, dass das aus dem gleichen Hause stammt.
Geniales Teil,
ich habs heute zum ersten Mal ausprobiert und bin vollkommen überzeugt und zufrieden.
Bloginblack und die Tipps sind Spitze!
Andreas
Comments on this entry are closed.