Title: Advance Caching Techniques
1Advance Caching Techniques
SCCFUG Winter 2002 Conference
- Keen Haynes
- MKAD
- khaynes_at_mkad.com
2Introduction
- What is caching?
- Why is it important to me?
- What can I cache?
- How do I leverage caching
3Introduction (cont.)
- Template Cache
- Trusted Cache
- Database Connection Cache or Pooling
- Query Caching
4Template Cache
- Cache the HTML generated by a template
- Cache for a specified period
- Caching can be client-side, server-side or both
5 ltCFCACHEgt
- Speeds up page rendering when dynamic content
does not have to be retrieved each time a user
accesses the page. To accomplish this, cfcache
creates temporary files that contain the static
HTML returned from a ColdFusion page. -
6 ltCFCACHEgt (cont.)
- ltcfcache
- action "cache" or "flush" or "clientCache" or
"optimal" - username "username"
- password "password"
- protocol "protocol name"
- timeout timeout date-time"
- directory "directory name for map file"
- cacheDirectory directory name for cached
pages" - expireURL "wildcarded URL reference"
- port "port-number"gt
7 ltCFCACHEgt (cont.)
- Client-side caching
- ltCFCACHE ACTIONCLIENTCACHE
- Server-side caching
- ltCFCACHE ACTIONCACHE
- Optimal combination of client server
- ltCFCACHE ACTIONOPTIMAL
- Refresh a cached page
- ltCFCACHE ACTIONFLUSH
8 ltCFCACHEgt (cont.)
- ltCFCACHE ACTIONCACHE
- TIMEOUTDateAdd(h, -4, Now())gt
- ltCFCACHE ACTIONFLUSH
- EXPIREURLCustomer.cfm?
9Trusted Cache
- When checked, any requested files found to
currently reside in the template cache will not
be inspected for potential updates recommended
for sites that do not update during the life of
the server.
10Trusted Cache (cont.)
- Refreshing the template cache
- Uncheck the 'Trusted Cache' option in the
ColdFusion Administrator. - Click Apply.
- Check the "Trusted Cache" option.
- Click Apply.
11Caching and CF Admin
12Database Connection Caching
- If "Maintain Database Connections" is enabled for
a data source, CF keeps the connection open after
its first connection to the database. It does not
log out of the database after this first
connection. - Will create a new connection if a request is
using a data source connection that is already
opened, and another request is received - The connection pool can increase up to the
setting for simultaneous connections limit which
is set for each data source.
13Database Connection Caching (cont.)
14Caching and database queries
- What does ColdFusion do when it sees a query?
- ltCFQUERYgt
- Cachedwithin
- Cachedafter
15Caching and database queries (cont)
- What does ColdFusion do when it sees a
- query?
- Passes SQL content to appropriate driver (handled
by a thread) - Waits for results to return before processing
rest of tag - Will use existing instance of driver if data
source already in use - Will cache connection information if Maintain
Database Connections is selected
16Caching and database queries (cont)
- ltCFQUERY NameStates DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT state_name FROM tbl_state
- lt/CFQUERYgt
- CACHEDWITHIN (TIMESPAN) caches the query
results for a specified time - CACHEDAFTER (DATE) caches the query based on a
particular date and time
17Caching and database queries (cont)
- ltCFQUERY Nameus_states DATASOURCEStates
- SELECT
- FROM us_states
- ORDER BY State
- lt/CFQUERYgt
18Caching and database queries (cont)
- ltCFQUERY Nameus_states DATASOURCEStates
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT
- FROM us_states
- ORDER BY State
- lt/CFQUERYgt
19Caching and database queries (cont)
- Points to remember
- Queries are cached on a server-wide basis
- Documentation states query must use same SQL
statement, data source, query name, user name,
password, and DBTYPE (I did not find this to be
true for query name ) - SQL statements must be exactly the same this
includes even tabbing
20Caching and database queries (cont)
- ltCFQUERY NameStates DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT state_name FROM tbl_state
- lt/CFQUERYgt
- IS NOT THE SAME QUERY AS
- ltCFQUERY NameStates DATASOURCEtest2
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT state_name FROM tbl_state
- lt/CFQUERYgt
21Caching and database queries (cont)
- ltCFQUERY NameStates DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT state_name FROM tbl_state
- lt/CFQUERYgt
- IS NOT THE SAME QUERY AS
- ltCFQUERY NameStates DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT state_name
- FROM tbl_state
- lt/CFQUERYgt
22Caching and database queries (cont)
- ltcfquery name"us_states" datasource"States"
- CACHEDWITHINCreateTimeSpan(0,1,0,0)gt
- SELECT (Note tabbing)
- FROM us_states
- ORDER BY State
- lt/cfquerygt
23Caching and database queries (cont)
- More points to remember
- Queries containing dynamic values will result in
an instance of each record setting being cached - Max limit of 100 cached queries was removed with
CF4.5 - Cached queries will not reflect changes to the
database until the cache interval has expired.
24Caching and database queries (cont)
- Forcing an update of cached queries
- This can be accomplished by following queries
that - effect changes with a CFQUERY that contains a
negative - CACHEDWITHIN value
- ltCFQUERY NameCustomers DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,0,0,-1)gt
- SELECT customer_name FROM tbl_customer
- lt/CFQUERYgt
25Caching and database queries (cont)
- ltCFQUERY NameUpdateCustomer DATASOURCEtestgt
- UPDATE
- lt/CFQUERYgt
-
- ltCFQUERY NameCustomers DATASOURCEtest
- CACHEDWITHINCreateTimeSpan(0,0,0,-1)gt
- SELECT customer_name FROM tbl_customer
- lt/CFQUERYgt
26Advance Security Caching and CF Admin
- Security Server Policy Store Cache caches
Advanced security information. By default, it is
notified of administrative changes to the policy
store once every minute. Using this cache
provides the most noticeable performance
improvements with Advanced security. - Security Server Authorization Cache caches each
unique isAuthorized call. - ColdFusion Server Cache caches isAuthorized and
isProtected requests.
27Advance Security Caching and CF Admin (cont.)
28Advance Security Caching and CF Admin (cont.)
29ltCFOBJECTCACHEgt
- The CFML Language Reference ommitssic a new
ColdFusion Server 5 tag, cfobjectcache. It
clears, or flushes, the entire query cache. - ltcfobjectcache action"clear"gt The action
attribute must be set to clear. No other values
are supported. - http//livedocs.macromedia.com/cf50docs/CFML_Refer
ence/Tags78.jsp1102316
30Summary
- Things to consider
- Overhead
- Need for current information
- Identify candidates for caching both long
running and frequently called queries and
templates - Testing to verify expected results
-
31- ltCFQUESTIONSgt
- ?
- lt/CFQUESTIONSgt