ColdFusion 9.0 Resources |
About persistent scope variablesColdFusion provides four variable scopes, described in the following table, that let you maintain data that must be available to multiple applications or users or must last beyond the scope of the current request.
The following sections provide information that is common to all or several of these variables. Later sections describe how to use the Client, Session, Application, and Server scopes in your applications, and provide detailed information about locking code. ColdFusion persistent variables and ColdFusion structuresAll persistent scopes are available as ColdFusion structures. As a result, you can use ColdFusion structure functions to access and manipulate Client, Session, Application, and Server scope contents. Information about using these functions in detail is not covered, but information about features or limitations that apply to specific scopes is provided. Note: Although you can use the StructClear function to clear
your data from the Server scope, the function does not delete the
names of the variables, only their values, and it does not delete
the contents of the Server.os and Server.ColdFusion structures.
Using the StructClear function to clear the Session,
or Application scope clears the entire scope, including the built-in
variables. Using the StructClear function to clear
the Client scope clears the variables from the server memory, but
does not delete the stored copies of the variables.
ColdFusion persistent variable issuesVariables in the Session, Application, and Server scopes are kept in ColdFusion server memory. This storage method has several implications:
Note: If you use J2EE session management and configure
the J2EE server to retain session data between server restarts,
ColdFusion retains session variables between server restarts.
Additionally, be careful when using client variables in a server cluster, where an application can run on multiple servers. Locking memory variablesBecause ColdFusion is a multi-threaded system in which multiple requests can share Session, Application, and Server scope variables, it is possible for two or more requests to try to access and modify data at the same time. ColdFusion runs in a J2EE environment, which prevents simultaneous data access, so multiple requests do not cause severe system errors. However, such requests can result in inconsistent data values, particularly when a page changes more than one variable. To prevent data errors with session, application, and server variables, lock code that writes and reads data in these scopes. For more information, see Locking code with cflock. Using variables in clustered systemsBecause memory variables are stored in memory, they are not available to all servers in a cluster. As a result, you generally do not use Session, Application, or Server scope variables in clustered environment. However, use these scope variables in a clustered system in the following circumstances:
To use client variables on a clustered system, store the variables as cookies or in a database that is available to all servers. If you use database storage, on one server only, select the Purge Data for Clients that Remain Unvisited option on the Client Variables, Add/Edit Client Store page in the Server Settings area in the ColdFusion Administrator. For more information on using client and session variables in clustered systems, see Managing client identity information in a clustered environment. |