|
Some
ColdFusion pages produce output that changes infrequently. For example, if
you have an application that extracts a vendor list from a database
or produces a quarterly results summary. Normally, when ColdFusion
gets a request for a page in the application, it does all the business
logic and display processing that are required to produce the report
or generate and display the list. If the results change infrequently,
it is an inefficient use of processor resources and bandwidth.
The cfcache tag tells ColdFusion to cache the
HTML that results from processing a page request in a temporary
file on the server. This HTML need not be generated each time the
page is requested. When ColdFusion gets a request for a cached ColdFusion
page, it retrieves the pregenerated HTML page without having to
process the ColdFusion page. ColdFusion can also cache the page
on the client. If the client browser has its own cached copy of
the page from a previous viewing, ColdFusion instructs the browser
to use the client’s page rather than resending the page.
Note: The cfcache tag caching mechanism
considers that each URL is a separate page. Therefore, http://www.mySite.com/view.cfm?id=1
and http://www.mySite.com/view.cfm?id=2 result in two separate cached
pages. Because ColdFusion caches a separate page for each unique
set of URL parameters, the caching mechanism accommodates pages
for which different parameters result in different output.
Using the cfcache tagYou tell ColdFusion to cache the page
results by placing a cfcache tag on your ColdFusion
page before code that outputs text. The tag lets you specify the following
information:
Whether to cache the page results on the server, the
client system, or both. The default is both. The default is optimal
for pages that are identical for all users. If the pages contain
client-specific information, or are secured with ColdFusion user
security, set the action attribute in the cfcache tag
to ClientCache.
The directory on the server in which to store the cached
pages. The default directory is cf_root/cache. It is a good
practice to create a separate cache directory for each application.
Doing so prevents the cfcache tag flush action
from inappropriately flushing more than one application’s caches
at a time.
The time span that indicates how long the page lasts in the
cache from when it is stored until it is automatically flushed.
You can also
specify several attributes for accessing a cached page on the web server,
including a user name and password (if required by the web server),
the port, and the protocol (HTTP or HTTPS) to use to access the
page.
Place
the cfcache tag before any code on your page that
generates output, typically at the top of the page body. For example,
the following tag tells ColdFusion to cache the page on both the
client and the server. On the server, the page is cached in the
e:/temp/page_cache directory. ColdFusion retains the cached page
for one day.
<cfcache timespan="#CreateTimespan(1, 0, 0, 0)#" directory="e:/temp/page_cache">
Important: If an Application.cfm or Application.cfc
page displays text (for example, if it includes a header page),
use the cfcachetag on the Application.cfm page, in addition to the pages that you cache. Otherwise, ColdFusion displays the Application.cfm page output twice on each cached page.
Flushing cached pagesColdFusion automatically flushes any cached
page if you change the code on the page. It also automatically flushes
pages after the expiration time span passes.
Use the cfcache tag with the action="flush" attribute
to immediately flush one or more cached pages. You can optionally
specify the directory that contains the cached pages to be flushed
and a URL pattern that identifies the pages to flush. If you do
not specify a URL pattern, all pages in the directory are flushed.
The URL pattern can include asterisk (*) wildcards to specify parts
of the URL that can vary.
When you use the cfcache tag to flush cached
pages, ColdFusion deletes the pages cached on the server. If a flushed
page is cached on the client system, it is deleted, and a new copy
gets cached the next time the client tries to access the ColdFusion
page.
The following example flushes all the pages in the e:/temp/page_cache/monthly directory
that start with HR:
<cfcache action="flush" directory="e:/temp/page_cache/monthly" expirURL="HR*">
If you have a ColdFusion page that updates data that you use
in cached pages, the page that does the updating includes a cfcache tag
that flushes all pages that use the data.
For more information on the cfcache tag, see the CFML Reference.
|
|
|