You can also pass in the caching arguments below and your view will be rendered once and then cached for further renderings. Every ColdBox application has two active cache regions: default and template
. All view and event caching renderings go into the template
cache.
Argument | Type | Required | Default | Description |
---|---|---|---|---|
cache | boolean | false | false | Cache the view to be rendered |
cacheTimeout | numeric | false | (provider default) | The timeout in minutes or whatever the cache provider defines |
cacheLastAccessTimeout | numeric | false | (provider default) | The idle timeout in minutes or whatever the cache provider defines |
cacheSuffix | string | false | --- | Adds a suffix key to the cached key. Used for providing uniqueness to the cacheable entry |
component name="general"{
function index(event,rc,prc){
// call some model for data and put into the request collection
prc.myQuery = getInstance('MyService').getData();
// view with caching parameters
event.setView(
view="general/index",
cache=true,
cacheTimeout=60,
cacheLastAccessTimeout=15,
cacheSuffix=getfwLocale()
);
}
}
So now that our views are cached, how do I purge them programmatically? Well, you need to talk to the template
cache provider and use the clearing methods:
// get a reference to the template cache
cache = cachebox.getCache( 'template' );
// or via shortcut notation
cache = getCache( "template" );
// or injection
property name="cache" inject="cachebox:template";
Then we can perform several operations on views:
clearView(string viewSnippet)
: Used to clear a view from the cache by using a snippet matched according to name + cache suffix.clearMultiView(any viewSnippets)
: Clear using a list or array of view snippets.clearAllViews([boolean async=true])
: Can clear ALL cached views in one shot and can be run asynchronously.
cachebox.getCache( 'template' ).clearView('general/index');
cachebox.getCache( 'template' ).clearAllViews(async=true);
cachebox.getCache( 'template' ).clearMultiView('general/index','index','home');
To turn off view caching for your entire application, set the viewCaching
setting to false in your config/Coldbox.cfc
config file.
coldbox = {
// Activate view caching
viewCaching = false
}