Cache-O-Matic - Mura Docs v6

Cache-O-Matic

The easiest way to cache content in Mura is to use the built in cf_cacheOMatic tag. For those who are not familiar with the tag, it gives the user the ability to cache any desired display content.

<cf_CacheOMatic
key="{a unique key}"
nocache="{1=don't cache, 0=cache}"
timespan="{timespan object}">
Content here ...
</cf_CacheOMatic>

Example

<cf_CacheOMatic
key="page#$.content('contentID')#"
nocache="#$.event('noCache')#">
<cfoutput>
<p>The title of this page is #$.content('menuTitle')#.</p>
</cfoutput>
</cf_CacheOMatic>

You can also set the timespan the item will remain cached.

<cf_CacheOMatic
key="page#$.content('contentID')#"
nocache="#$.event('noCache')#"
timespan="#CreateTimeSpan(0,0,5,0)#">
<cfoutput>
<p>The title of this page is #$.content('menuTitle')#.</p>
</cfoutput>
</cf_CacheOMatic>

If you have a code snippet that you do not want to ever be cached you can set request.cacheItem=false and any wrapping CacheOMatic tags will not add the rendered output to the cache. (For example, $.setDynamicContent() uses request.cacheItem=false)

<cf_CacheOMatic
key="page#$.content('contentID')#"
nocache="#$.event('noCache')#">
<cfoutput>
<p>The username of the person logged in is #$.currentUser('username')#.</p>
<cfset request.cacheItem=false>
</cfoutput>
</cf_CacheOMatic>

Programmatically Setting the Cached Items Timespan

If you have a code snippet that you want to be in the sites cache for no longer that a certain timespan you can set request.cacheItemTimeSpan={TimeSpan Object}.

<cf_CacheOMatic
key="page#$.content('contentID')#"
nocache="#$.event('noCache')#">
<cfoutput>
<p>The title of this page is #$.content('menuTitle')#.</p>
<!--- cache for no longer than 5 minutes.--->
<cfset request.cacheItemTimeSpan=createTimeSpan(0,0,5,0)>
</cfoutput>
</cf_CacheOMatic>