advance caching techniques keen haynes mkad sccfug winter 2002 conference

31
Advance Caching Techniques Keen Haynes MKAD [email protected] m SCCFUG Winter 2002 Conference

Upload: julia-freeman

Post on 18-Jan-2018

220 views

Category:

Documents


0 download

DESCRIPTION

Introduction (cont.) Template Cache Trusted Cache Database Connection Cache or Pooling Query Caching

TRANSCRIPT

Page 1: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Advance Caching Techniques

Keen [email protected]

SCCFUG Winter 2002 Conference

Page 2: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Introduction

• What is caching?• Why is it important to me?• What can I cache?• How do I leverage caching

Page 3: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Introduction (cont.)

• Template Cache• Trusted Cache• Database Connection Cache or Pooling• Query Caching

Page 4: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Template Cache

• Cache the HTML generated by a template• Cache for a specified period• Caching can be client-side, server-side or

both

Page 5: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFCACHE>

• 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.

Page 6: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFCACHE> (cont.)

<cfcache 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">

Page 7: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFCACHE> (cont.)

• Client-side caching<CFCACHE ACTION=“CLIENTCACHE”• Server-side caching<CFCACHE ACTION=“CACHE” • Optimal – combination of client & server<CFCACHE ACTION=“OPTIMAL” • Refresh a cached page<CFCACHE ACTION=“FLUSH”

Page 8: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFCACHE> (cont.)

<CFCACHE ACTION=“CACHE” TIMEOUT=“#DateAdd(“h”, “-4”, Now())#”>

<CFCACHE ACTION=“FLUSH” EXPIREURL=“Customer.cfm?*”

Page 9: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Trusted 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.

Page 10: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Trusted Cache (cont.)

Refreshing the template cache– Uncheck the 'Trusted Cache' option in the

ColdFusion Administrator. – Click Apply. – Check the "Trusted Cache" option. – Click Apply.

Page 11: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and CF Admin

Page 12: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Database 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.

Page 13: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Database Connection Caching (cont.)

Page 14: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries

• What does ColdFusion do when it sees a query?

• <CFQUERY>• Cachedwithin• Cachedafter

Page 15: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching 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

Page 16: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“States” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>SELECT state_name FROM tbl_state

</CFQUERY>

• CACHEDWITHIN (TIMESPAN) – caches the query results for a specified time

• CACHEDAFTER (DATE) – caches the query based on a particular date and time

Page 17: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“us_states” DATASOURCE=“States”SELECT *FROM us_statesORDER BY State

</CFQUERY>

Page 18: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“us_states” DATASOURCE=“States”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>

SELECT *FROM us_statesORDER BY State

</CFQUERY>

Page 19: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching 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

Page 20: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“States” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>SELECT state_name FROM tbl_state

</CFQUERY>

IS NOT THE SAME QUERY AS

<CFQUERY Name=“States” DATASOURCE=“test2”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>SELECT state_name FROM tbl_state

</CFQUERY>

Page 21: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“States” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>SELECT state_name FROM tbl_state

</CFQUERY>

IS NOT THE SAME QUERY AS

<CFQUERY Name=“States” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>SELECT state_name FROM tbl_state

</CFQUERY>

Page 22: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<cfquery name="us_states" datasource="States" CACHEDWITHIN=#CreateTimeSpan(0,1,0,0)#>

SELECT * (Note: tabbing)FROM us_statesORDER BY State</cfquery>

Page 23: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching 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.

Page 24: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

• Forcing an update of cached queriesThis can be accomplished by following queries thateffect changes with a CFQUERY that contains a negativeCACHEDWITHIN value

<CFQUERY Name=“Customers” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,0,0,-1)#>SELECT customer_name FROM tbl_customer

</CFQUERY>

Page 25: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Caching and database queries (cont)

<CFQUERY Name=“UpdateCustomer DATASOURCE=“test”>UPDATE

</CFQUERY>

<CFQUERY Name=“Customers” DATASOURCE=“test”CACHEDWITHIN=#CreateTimeSpan(0,0,0,-1)#>SELECT customer_name FROM tbl_customer

</CFQUERY>

Page 26: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Advance 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.

Page 27: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Advance Security Caching and CF Admin (cont.)

Page 28: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Advance Security Caching and CF Admin (cont.)

Page 29: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFOBJECTCACHE>

• The CFML Language Reference ommits[sic] a new ColdFusion Server 5 tag, cfobjectcache. It clears, or flushes, the entire query cache. <cfobjectcache action="clear"> The action attribute must be set to clear. No other values are supported.

• http://livedocs.macromedia.com/cf50docs/CFML_Reference/Tags78.jsp#1102316

Page 30: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

Summary

• 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

Page 31: Advance Caching Techniques Keen Haynes MKAD SCCFUG Winter 2002 Conference

<CFQUESTIONS>?

</CFQUESTIONS>