cf_CacheOMatic Tags
One of the easiest ways to improve the performance of your site, is to use proven caching techniques. In addition to the native caching strategies for CFML, Mura also offers a special, custom tag, <cf_CacheOMatic>
, to use for expensive database transaction code, or other time-consuming CFML code that doesn't need to be executed during each request.
Using Mura's <cf_CacheOMatic>
tag allows you to add data to Mura's cache. The tag only works when Site Caching is enabled, which is a great reason to use it since you can easily disable it, if necessary.
The custom tag is located under {context}/requirements/mura/customtags/CacheOMatic.cfm
if you would like to inspect the file to see how it works under the hood.
Tag Syntax
<cf_CacheOMatic> Code or data to cache. </cf_CacheOMatic>
Attributes
Attribute | Type | Default | Description |
---|---|---|---|
key | string | CGI.scriptname & CGI.query_string | A unique string to associate with the specified data. Used to retrieve the cached data, when Site Caching is enabled. |
timespan | datetime | CreateTimeSpan(0,0,30,0) | The desired time period the data should be cached for before it expires. (Defaults to 30 minutes). |
scope | string | application | The desired CFML scope in which to store the data. Valid options are application , session , and server . |
nocache | boolean | false | If true , Mura will not cache the code/data contained within the tag. Useful for explicitly omitting code from being cached. |
purgecache | boolean | request.purgecache | If true , Mura will empty its cache. |
siteid | string | request.siteid | You may choose to specify an alternate SiteID to associate the cache to. |
Usage
Use this custom tag to cache inline content or data within layout templates.
Examples
Using the "key" Attribute
This example uses the ContentID of the content item as the key with prefix of "page-".
<cf_CacheOMatic key="page-#m.content('contentid')#"> <h2 class="page-title">#esapiEncode('html', m.content('pagetitle'))#</h2> </cf_CacheOMatic>
Using the "nocache" Attribute
The following example demonstrates how you could use the nocache attribute to see an "un-cached" version of the output by simply appending ?nocache=true to the URL.
<cf_CacheOMatic key="example-timestamp1" nocache="#m.event('nocache')#"> <p>The time is now: #LSTimeFormat(Now())#</p> </cf_CacheOMatic>
Using the "timespan" Attribute
In this example, we're setting the cache to expire in five (5) hours.
<cf_CacheOMatic key="example-timestamp2" nocache="#m.event('nocache')#" timespan="#CreateTimeSpan(0,5,0,0)#"> <p>The time is now: #LSTimeFormat(Now())#</p> </cf_CacheOMatic>