CacheBox: Enterprise Caching
7.x
7.x
  • Introduction
    • Contributing Guide
    • Release History
      • What's New With 7.2.0
      • What's New With 7.1.0
      • What's New With 7.0.0
    • Upgrading to CacheBox 7
    • About This Book
      • Author
  • Getting Started
    • Overview
    • Installing CacheBox
    • Creating CacheBox
      • Common CacheFactory Methods
      • Cache Cleanup/Reaping
  • Configuration
    • CacheBox Configuration
      • CacheBox DSL
        • Default Cache
      • CacheBox Config Object
      • ColdBox Configuration
  • Usage
    • Cache Providers
      • CF Providers
      • Lucee Providers
      • Mock Provider
      • CacheBox Provider
      • Couchbase Providers
    • CacheBox Object Stores
      • ConcurrentStore
      • ConcurrentSoftReferenceStore
      • DiskStore
      • JDBCStore
      • BlackholeStore
  • Advanced Usage
    • CacheBox Eviction Policies
      • Using Your Own Policy
    • CacheBox Event Model
      • CacheBox Events
      • Provider Events
      • Cache Listeners
    • Cache Reporting
      • Creating Your Own Skins
        • Skin Templates
        • ReportHandler
          • Action Commands
  • For The Geeks
    • Caching Concepts
      • Caching Considerations
      • Cache Loading
      • Definitions
      • Java Soft References
    • Cache Topologies
      • Single Instance/In-Process
      • Single Instance/Out-Process
      • Replicated
      • Distributed
    • CacheBox Architecture
      • CacheFactory
      • CacheBoxConfig
      • EventManager
      • ColdBox
      • LogBox
      • ICacheProvider
      • ICacheStats
      • IObjectStore
      • IEvictionPolicy
      • AbstractEvictionPolicy
      • IColdboxApplicationCache
Powered by GitBook
On this page
  • 1. Default Configuration
  • 2. Portable CFC
  • 3. Programmatic Config
  • 4. Struct Literal Config

Was this helpful?

Edit on GitHub
Export as PDF
  1. Configuration

CacheBox Configuration

PreviousCache Cleanup/ReapingNextCacheBox DSL

Last updated 1 year ago

Was this helpful?

CacheBox comes pre-configured for operation for caching using a default cache. However, you can customize CacheBox using different strategies by levarging the .

When you are in a ColdBox application, you will have a cachebox structure in your ColdBox.cfc already that you can use, or you can create a portable CFC as well and place it in config/CacheBox.cfc

The cool thing about this CacheBox DSL is that it is the same whether you are using CacheBox in ColdBox applications or any other framework or non-framework ColdFusion application.

Configuration can be done in the following ways:

  1. No configuration: Uses the default configuration shown below

  2. Portable CFC: Creating a portable data CFC using the CacheBox DSL in a configure() method

  3. Programmatic Config: Creating the CacheBoxConfig object and interacting with its methods programmatically

  4. CacheBox DSL Struct: Passing a struct literal into CacheBox, using the CacheBox DSL.

1. Default Configuration

This is the default configuration when CacheBox is created with no config. CacheBox will

  • Use a default LogBox configuration to the console

  • Register CacheBox in the CFML application scope as cachebox

  • Create a defaultcache using ConcurrentSoftReferenceStore storage

/**
 * Copyright Since 2005 ColdBox Framework by Luis Majano and Ortus Solutions, Corp
 * www.ortussolutions.com
 * ----
 * The default ColdBox CacheBox configuration object that is used when the cache factory is created by itself
 **/
component {

/**
 * Configure CacheBox, that's it!
 */
function configure(){
    // The CacheBox configuration structure DSL
    cacheBox = { 
	// LogBox Configuration file
	logBoxConfig      : "coldbox.system.cache.config.LogBox",
	// Scope registration, automatically register the cachebox factory instance on any CF scope
	// By default it registers itself on server scope
	scopeRegistration : {
		enabled : true,
		scope   : "application", // the cf scope you want
		key     : "cacheBox"
	},
	// The defaultCache has an implicit name of "default" which is a reserved cache name
	// It also has a default provider of cachebox which cannot be changed.
	// All timeouts are in minutes
	// Please note that each object store could have more configuration properties
	defaultCache : {
		objectDefaultTimeout           : 120,
		objectDefaultLastAccessTimeout : 30,
		useLastAccessTimeouts          : true,
		reapFrequency                  : 2,
		freeMemoryPercentageThreshold  : 0,
		evictionPolicy                 : "LRU",
		evictCount                     : 1,
		maxObjects                     : 300,
		objectStore                    : "ConcurrentSoftReferenceStore",
		// This switches the internal provider from normal cacheBox to coldbox enabled cachebox
		coldboxEnabled                 : false
	},
	// Register all the custom named caches you like here
	caches    : {},
	// Register all event listeners here, they are created in the specified order
	listeners : [
		 // { class="", name="", properties={} }
	]
    };
}

}

2. Portable CFC

You can create a CFC with a single configure method with the CacheBox configuration in a variable called cachebox using the CacheBox DSL.

component{
/**
 * Configure CacheBox for ColdBox Application Operation
 */
function configure(){
    // The CacheBox configuration structure DSL
    cacheBox = {
	// LogBox config already in coldbox app, not needed
	// logBoxConfig = "coldbox.system.web.config.LogBox",

	// The defaultCache has an implicit name "default" which is a reserved cache name
	// It also has a default provider of cachebox which cannot be changed.
	// All timeouts are in minutes
	defaultCache : {
		objectDefaultTimeout           : 120, // two hours default
		objectDefaultLastAccessTimeout : 30, // 30 minutes idle time
		useLastAccessTimeouts          : true,
		reapFrequency                  : 5,
		freeMemoryPercentageThreshold  : 0,
		evictionPolicy                 : "LRU",
		evictCount                     : 1,
		maxObjects                     : 300,
		objectStore                    : "ConcurrentStore", // guaranteed objects
		coldboxEnabled                 : true
	},
	// Register all the custom named caches you like here
	caches : {
		// Named cache for all coldbox event and view template caching
		template : {
			provider   : "coldbox.system.cache.providers.CacheBoxColdBoxProvider",
			properties : {
				objectDefaultTimeout           : 120,
				objectDefaultLastAccessTimeout : 30,
				useLastAccessTimeouts          : true,
				freeMemoryPercentageThreshold  : 0,
				reapFrequency                  : 5,
				evictionPolicy                 : "LRU",
				evictCount                     : 2,
				maxObjects                     : 300,
				objectStore                    : "ConcurrentSoftReferenceStore" // memory sensitive
			}
		}
	}
    };

    // Add caches per engine
    if ( listFindNoCase( "Lucee", server.coldfusion.productname ) ) {
	cachebox.caches.luceeCache = { provider : "coldbox.system.cache.providers.LuceeProvider" };
    } else {
	cachebox.caches.cfCache = { provider : "coldbox.system.cache.providers.CFColdBoxProvider" };
    }
}
}

3. Programmatic Config

You can create an instance of the cachebox.system.cache.config.CacheBoxConfig and calling methods on it.

config = new cachebox.system.cache.config.CacheBoxConfig()
    .scopeRegistration( true )
    .defaultCache( maxObjects : 200, objectStore : "ConcurrentStore" );
    
new cachebox.system.cache.CacheFactory( config );

4. Struct Literal Config

You can also use a struct literal to configure CacheBox

new cachebox.system.cache.CacheFactory( {
	// LogBox Configuration file
	logBoxConfig      : "coldbox.system.cache.config.LogBox",
	// Scope registration, automatically register the cachebox factory instance on any CF scope
	// By default it registers itself on server scope
	scopeRegistration : {
		enabled : true,
		scope   : "application", // the cf scope you want
		key     : "cacheBox"
	},
	// The defaultCache has an implicit name of "default" which is a reserved cache name
	// It also has a default provider of cachebox which cannot be changed.
	// All timeouts are in minutes
	// Please note that each object store could have more configuration properties
	defaultCache : {
		objectDefaultTimeout           : 120,
		objectDefaultLastAccessTimeout : 30,
		useLastAccessTimeouts          : true,
		reapFrequency                  : 2,
		freeMemoryPercentageThreshold  : 0,
		evictionPolicy                 : "LRU",
		evictCount                     : 1,
		maxObjects                     : 300,
		objectStore                    : "ConcurrentSoftReferenceStore",
		// This switches the internal provider from normal cacheBox to coldbox enabled cachebox
		coldboxEnabled                 : false
	}
} );
CacheBox Configuration DSL
CacheBox DSL