It's in trunk and release-1.10 ;). It's recommended you export from the release
branch to use it (there were several array issues to be fixed in the next mini
release), and here's the excerpt from the Docbook source. There's a working
example in a small demo project for 1.10 at http://github.com/padraic/ZFPlanet
<sect2 id="zend.cache.backends.static">
<title>Zend_Cache_Backend_Static</title>
<para>
This backend works in concert with <classname>
Zend_Cache_Frontend_Capture</classname> (the two must be used
together) to save the output from requests as static files. This
means the static files are served directly on subsequent requests
without any involvement of PHP or the Zend Framework at all.
</para>
<para>
The benefits of this cache include a large throughput increase since
all subsequent requests return the static file and don't need any
dynamic processing. Of course this also has some disadvantages. The
only way to retry the dynamic request is to purge the cached file
from elsewhere in the application (or via a cronjob if timed). It
is also restricted to single-server applications where only one
filesystem is used. Nevertheless, it can be a powerful means of
getting more performance without incurring the cost of a proxy on
single machines.
</para>
<para>
Before describing its options, you should note this needs some
changes to the default .htaccess file in order for requests to be
directed to the static files if they exist. Here's an example of
a simple application caching some content, including two specific
feeds which need additional treatment to serve a correct
Content-Type header:
</para>
<programlisting language="text"><![CDATA[
AddType application/rss+xml .xml
AddType application/atom+xml .xml
RewriteEngine On
RewriteCond %{REQUEST_URI} feed/rss$
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/rss+xml]
RewriteCond %{REQUEST_URI} feed/atom$
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/atom+xml]
RewriteCond %{DOCUMENT_ROOT}/cached/index.html -f
RewriteRule ^/*$ cached/index.html [L]
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.(html|xml|json|opml|svg) -f
RewriteRule .* cached/%{REQUEST_URI}.%1 [L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
]]></programlisting>
<para>
The above assumes static files are cached to the directory
./public/cached.
We'll cover the option setting this location, "public_dir", below.
</para>
<para>
Due to the nature of static file caching, the backend class offers
two
additional methods: <methodname>remove()</methodname> and
<methodname>
removeRecursively()</methodname>. Both accept a request URI, which
when
mapped to the "public_dir" where static files are cached, and has a
pre-stored extension appended, provides the name of either a static
file to delete, or a directory path to delete recursively. Due to
the
restraints of <classname>Zend_Cache_Backend_Interface</classname>,
all
other methods such as <classname>save()</classname> accept an ID
which
is calculated by applying bin2hex() to a request URI.
</para>
<para>
Given the level at which static caching operates, static file
caching
is addressed for simpler use with the <classname>
Zend_Controller_Action_Helper_Cache</classname> action helper. This
helper
assists in setting which actions of a controller to cache, with
what tags,
and with which extension. It also offers methods for purging the
cache by
request URI or tag. Static file caching is also assisted by
<classname>
Zend_Cache_Manager</classname> which includes pre-configured
configuration
templates for a static cache (as Zend_Cache_Manager::PAGECACHE or
"page").
The defaults therein can be configured as needed to set up a
"public_dir"
location for caching, etc.
</para>
<note>
<para>
It should be noted that the static cache actually uses a
secondary
cache to store tags (obviously we can't store them elsewhere
since
a static cache does not invoke PHP if working correctly). This
is
just a standard Core cache, and should use a persistent backend
such
as File or TwoLevels (to take advantage of memory storage
without
sacrificing permanent persistance). The backend includes the
option
"tag_cache" to set this up (it is obligatory), or the
<methodname>
setInnerCache()</methodname> method.
</para>
</note>
<table id="zend.cache.backends.static.table">
<title>Static Backend Options</title>
<tgroup cols="4">
<thead>
<row>
<entry>Option</entry>
<entry>Data Type</entry>
<entry>Default Value</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><emphasis>public_dir</emphasis></entry>
<entry><type>String</type></entry>
<entry>NULL</entry>
<entry>
Directory where to store static files. This must
exist
in your public directory.
</entry>
</row>
<row>
<entry><emphasis>file_locking</emphasis></entry>
<entry><type>Boolean</type></entry>
<entry><constant>TRUE</constant></entry>
<entry>
Enable or disable file_locking : Can avoid cache
corruption under
bad circumstances but it doesn't help on
multithread webservers
or on <acronym>NFS</acronym> filesystems...
</entry>
</row>
<row>
<entry><emphasis>read_control</emphasis></entry>
<entry><type>Boolean</type></entry>
<entry><constant>TRUE</constant></entry>
<entry>
Enable / disable read control : if enabled, a
control key is
embedded in the cache file and this key is compared
with the
one calculated after the reading.
</entry>
</row>
<row>
<entry><emphasis>read_control_type</emphasis></entry>
<entry><type>String</type></entry>
<entry>'crc32'</entry>
<entry>
Type of read control (only if read control is
enabled). Available values
are : 'md5' (best but slowest), 'crc32' (lightly
less safe but faster,
better choice), 'adler32' (new choice, faster than
crc32),
'strlen' for a length only test (fastest).
</entry>
</row>
<row>
<entry><emphasis>cache_file_umask</emphasis></entry>
<entry><type>Integer</type></entry>
<entry>0700</entry>
<entry>
umask for cached files.
</entry>
</row>
<row>
<entry><emphasis>cache_directory_umask</emphasis></entry>
<entry><type>Integer</type></entry>
<entry>0700</entry>
<entry>
Umask for directories created within public_dir.
</entry>
</row>
<row>
<entry><emphasis>file_extension</emphasis></entry>
<entry><type>String</type></entry>
<entry>'.html'</entry>
<entry>
Default file extension for static files created.
This
can be configured on the fly, see <methodname>
Zend_Cache_Backend_Static::save()</methodname>
though
generally it's recommended to rely on <classname>
Zend_Controller_Action_Helper_Cache</classname>
when
doing so since it's simpler that way than messing
with
arrays/serialization manually.
</entry>
</row>
<row>
<entry><emphasis>index_filename</emphasis></entry>
<entry><type>String</type></entry>
<entry>'index'</entry>
<entry>
If a request URI does not contain sufficient
information
to construct a static file (usually this means an
index
call, e.g. URI of '/'), the index_filename is
used instead.
So '' or '/' would map to 'index.html' (assuming
the default
file_extension is '.html').
</entry>
</row>
<row>
<entry><emphasis>tag_cache</emphasis></entry>
<entry><type>Object</type></entry>
<entry>NULL</entry>
<entry>
Used to set an 'inner' cache utilised to store
tags
and file extensions associated with static files.
This
MUST be set or the static cache cannot be tracked
and
managed.
</entry>
</row>
<row>
<entry><emphasis>disable_caching</emphasis></entry>
<entry><type>Boolean</type></entry>
<entry>FALSE</entry>
<entry>
If set to TRUE, static files will not be cached.
This
will force all requests to be dynamic even if
marked
to be cached in Controllers. Useful for debugging.
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
Pádraic Brady
http://blog.astrumfutura.com
http://www.survivethedeepend.com
OpenID Europe Foundation Irish Representative
________________________________
From: Matthew Weier O'Phinney <[email protected]>
To: [email protected]
Sent: Thu, January 28, 2010 9:07:14 PM
Subject: Re: [fw-general] Zend_Cache_Backend_Static missing from reference guide
-- Mark Wright <[email protected]> wrote
(on Thursday, 28 January 2010, 01:38 PM -0700):
> Zend_Cache_Backend_Static is in the api doc but not the reference guide.
I'm thinking Paddy may not have completed the end-user docs for this
prior to tagging... I'm sure he'll chime in to let us know, though. :)
--
Matthew Weier O'Phinney
Project Lead | [email protected]
Zend Framework | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc