| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.cache.backends">
- <title>Zend_Cache Backends</title>
- <para>
- There are two kinds of backends: standard ones and extended ones. Of course, extended
- backends offer more features.
- </para>
- <sect2 id="zend.cache.backends.file">
- <title>Zend_Cache_Backend_File</title>
- <para>
- This (extended) backends stores cache records into files (in a chosen directory).
- </para>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.file.table">
- <title>File 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>cache_dir</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>[system temp dir]</entry>
- <entry>Directory where to store cache files</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>hashed_directory_level</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0</entry>
- <entry>
- Hashed directory structure level : 0 means "no hashed directory
- structure", 1 means "one level of directory", 2 means "two levels"...
- This option can speed up the cache only when you have many thousands of
- cache files. Only specific benchs can help you to choose the perfect
- value for you. Maybe, 1 or 2 is a good start.
- </entry>
- </row>
- <row>
- <entry><emphasis>hashed_directory_perm</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0700</entry>
- <entry>Permissins for the hashed directory structure</entry>
- </row>
- <row>
- <entry><emphasis>file_name_prefix</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'zend_cache'</entry>
- <entry>
- prefix for cache files ; be really careful with this option because
- a too generic value in a system cache dir
- (like <filename>/tmp</filename>) can cause disasters when cleaning
- the cache
- </entry>
- </row>
- <row>
- <entry><emphasis>cache_file_umask</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0600</entry>
- <entry>umask for cache files</entry>
- </row>
-
- <row>
- <entry><emphasis>cache_file_perm</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0600</entry>
- <entry>Permissions for cache files</entry>
- </row>
- <row>
- <entry><emphasis>metatadatas_array_max_size</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>100</entry>
- <entry>
- internal max size for the metadatas array (don't change this value
- unless you know what you are doing)
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.sqlite">
- <title>Zend_Cache_Backend_Sqlite</title>
- <para>
- This (extended) backends stores cache records into a SQLite database.
- </para>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.sqlite.table">
- <title>Sqlite 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>cache_db_complete_path (mandatory)</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- The complete path (filename included) of the SQLite database
- </entry>
- </row>
- <row>
- <entry><emphasis>automatic_vacuum_factor</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>10</entry>
- <entry>
- Disable / Tune the automatic vacuum process. The automatic vacuum
- process defragment the database file (and make it smaller) when a
- <methodname>clean()</methodname> or <methodname>delete()</methodname>
- is called: 0 means no automatic vacuum ; 1 means systematic vacuum
- (when <methodname>delete()</methodname> or
- <methodname>clean()</methodname> methods are called) ; x (integer) >
- 1 => automatic vacuum randomly 1 times on x
- <methodname>clean()</methodname> or
- <methodname>delete()</methodname>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.memcached">
- <title>Zend_Cache_Backend_Memcached</title>
- <para>
- This (extended) backends stores cache records into a memcached server. <ulink
- url="http://www.danga.com/memcached/">memcached</ulink> is a high-performance,
- distributed memory object caching system. To use this backend, you need a memcached
- daemon and <ulink url="http://pecl.php.net/package/memcache">the memcache
- <acronym>PECL</acronym> extension</ulink>.
- </para>
- <para>
- Be careful : with this backend, "tags" are not supported for the moment as
- the "doNotTestCacheValidity=true" argument.
- </para>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.memcached.table">
- <title>Memcached 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>servers</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry>
- <command>array(array('host' => 'localhost', 'port' => 11211,
- 'persistent' => true, 'weight' => 1, 'timeout' => 5,
- 'retry_interval' => 15, 'status' => true,
- 'failure_callback' => '' ))</command>
- </entry>
- <entry>
- An array of memcached servers ; each memcached server is described by
- an associative array : 'host' => (string) : the name of the memcached
- server, 'port' => (int) : the port of the memcached server,
- 'persistent' => (bool) : use or not persistent connections to this
- memcached server 'weight' => (int) :the weight of the memcached
- server, 'timeout' => (int) :the time out of the memcached server,
- 'retry_interval' => (int) :the retry interval of the memcached server,
- 'status' => (bool) :the status of the memcached server,
- 'failure_callback' => (callback) : the failure_callback of the
- memcached server
- </entry>
- </row>
- <row>
- <entry><emphasis>compression</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- <constant>TRUE</constant> if you want to use on-the-fly compression
- </entry>
- </row>
- <row>
- <entry><emphasis>compatibility</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- <constant>TRUE</constant> if you want to use this compatibility mode
- with old memcache servers or extensions
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.libmemcached">
- <title>Zend_Cache_Backend_Libmemcached</title>
- <para>
- This (extended) backend stores cache records into a memcached server. <ulink
- url="http://www.danga.com/memcached/">memcached</ulink> is a high-performance,
- distributed memory object caching system. To use this backend, you need a memcached
- daemon and <ulink url="http://pecl.php.net/package/memcached">the memcached
- <acronym>PECL</acronym> extension</ulink>.
- </para>
- <para>
- Be careful : with this backend, "tags" are not supported for the moment as
- the "doNotTestCacheValidity=true" argument.
- </para>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.libmemcached.table">
- <title>Libmemcached 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>servers</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry>
- <command>array(array('host' => 'localhost', 'port' => 11211,
- 'weight' => 1))</command>
- </entry>
- <entry>
- An array of memcached servers ; each memcached server is described by
- an associative array:
- 'host' => (string) : the name of the memcached server,
- 'port' => (int) : the port of the memcached server,
- 'weight' => (int) :the weight of the memcached server
- </entry>
- </row>
- <row>
- <entry><emphasis>client</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry>
- <command>array(
- Memcached::OPT_DISTRIBUTION => Memcached::DISTRIBUTION_CONSISTENT,
- Memcached::OPT_HASH => Memcached::HASH_MD5,
- Memcached::OPT_LIBKETAMA_COMPATIBLE => true
- )</command>
- </entry>
- <entry>
- An associative array of memcached client options ;
- The array key can be the name of the memcached option constant
- (without 'OPT_') or the integer value of it.
- See <ulink url="http://php.net/manual/memcached.constants.php">
- Memcached constants on <acronym>PHP</acronym> manual</ulink>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.apc">
- <title>Zend_Cache_Backend_Apc</title>
- <para>
- This (extended) backends stores cache records in shared memory through
- the <ulink url="http://pecl.php.net/package/APC">APC</ulink> (Alternative
- <acronym>PHP</acronym> Cache) extension (which is of course need for using this
- backend).
- </para>
- <para>
- Be careful : with this backend, "tags" are not supported for the moment as
- the "doNotTestCacheValidity=true" argument.
- </para>
- <para>
- There is no option for this backend.
- </para>
- </sect2>
- <sect2 id="zend.cache.backends.xcache">
- <title>Zend_Cache_Backend_Xcache</title>
- <para>
- This backends stores cache records in shared memory through
- the <ulink url="http://xcache.lighttpd.net/">XCache</ulink> extension
- (which is of course need for using this backend).
- </para>
- <para>
- Be careful : with this backend, "tags" are not supported for the moment as
- the "doNotTestCacheValidity=true" argument.
- </para>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.xcache.table">
- <title>Xcache 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>user</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- <filename>xcache.admin.user</filename>, necessary for the
- <methodname>clean()</methodname> method
- </entry>
- </row>
- <row>
- <entry><emphasis>password</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- <filename>xcache.admin.pass</filename> (in clear form, not
- <acronym>MD5</acronym>), necessary for the
- <methodname>clean()</methodname> method
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.platform">
- <title>Zend_Cache_Backend_ZendPlatform</title>
- <para>
- This backend uses content caching <acronym>API</acronym> of the <ulink
- url="http://www.zend.com/en/products/platform/">Zend Platform</ulink> product.
- Naturally, to use this backend you need to have Zend Platform installed.
- </para>
- <para>
- This backend supports tags, but does not support
- <constant>CLEANING_MODE_NOT_MATCHING_TAG</constant> cleaning mode.
- </para>
- <para>
- Specify this backend using a word separator -- '-', '.', ' ', or '_'
- -- between the words 'Zend' and 'Platform' when using the
- <methodname>Zend_Cache::factory()</methodname> method:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Zend Platform');
- ]]></programlisting>
- <para>
- There are no options for this backend.
- </para>
- </sect2>
- <sect2 id="zend.cache.backends.twolevels">
- <title>Zend_Cache_Backend_TwoLevels</title>
- <para>
- This (extend) backend is an hybrid one. It stores cache records in two other backends :
- a fast one (but limited) like Apc, Memcache... and a "slow" one like File, Sqlite...
- </para>
- <para>
- This backend will use the priority parameter (given at the frontend level when storing a
- record) and the remaining space in the fast backend to optimize the usage of these two
- backends.
- </para>
- <para>
- Specify this backend using a word separator -- '-', '.', ' ', or '_'
- -- between the words 'Two' and 'Levels' when using the
- <methodname>Zend_Cache::factory()</methodname> method:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Two Levels');
- ]]></programlisting>
- <para>
- Available options are :
- </para>
- <table id="zend.cache.backends.twolevels.table">
- <title>TwoLevels 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>slow_backend</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>File</entry>
- <entry>the "slow" backend name</entry>
- </row>
- <row>
- <entry><emphasis>fast_backend</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>Apc</entry>
- <entry>the "fast" backend name</entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_options</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry><methodname>array()</methodname></entry>
- <entry>the "slow" backend options</entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_options</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry><methodname>array()</methodname></entry>
- <entry>the "fast" backend options</entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_custom_naming</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- if <constant>TRUE</constant>, the slow_backend argument is used as a
- complete class name; if <constant>FALSE</constant>,
- the frontend argument is used as the end of
- "<classname>Zend_Cache_Backend_</classname>[...]" class name
- </entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_custom_naming</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- if <constant>TRUE</constant>, the fast_backend argument is used as a
- complete class name; if <constant>FALSE</constant>,
- the frontend argument is used as the end of
- "<classname>Zend_Cache_Backend_</classname>[...]" class name
- </entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_autoload</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- if <constant>TRUE</constant>, there will no require_once for the
- slow backend (useful only for custom backends)
- </entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_autoload</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- if <constant>TRUE</constant>, there will no require_once for the fast
- backend (useful only for custom backends)
- </entry>
- </row>
- <row>
- <entry><emphasis>auto_refresh_fast_cache</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- if <constant>TRUE</constant>, auto refresh the fast cache when a
- cache record is hit
- </entry>
- </row>
- <row>
- <entry><emphasis>stats_update_factor</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>10</entry>
- <entry>
- disable / tune the computation of the fast backend filling percentage
- (when saving a record into cache, computation of the fast backend
- filling percentage randomly 1 times on x cache writes)
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.zendserver">
- <title>Zend_Cache_Backend_ZendServer_Disk and Zend_Cache_Backend_ZendServer_ShMem</title>
- <para>
- These backends store cache records using <ulink
- url="http://www.zend.com/en/products/server/downloads-all?zfs=zf_download">Zend
- Server</ulink> caching functionality.
- </para>
- <para>
- Be careful: with these backends, "tags" are not supported for the moment as the
- "doNotTestCacheValidity=true" argument.
- </para>
- <para>
- These backend work only withing Zend Server environment for pages requested through
- <acronym>HTTP</acronym> or <acronym>HTTPS</acronym> and don't work for command line
- script execution
- </para>
- <para>
- Specify this backend using parameter <emphasis>customBackendNaming</emphasis> as
- <constant>TRUE</constant> when using the <methodname>Zend_Cache::factory()</methodname>
- method:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Zend_Cache_Backend_ZendServer_Disk',
- $frontendOptions, $backendOptions, false, true);
- ]]></programlisting>
- <para>
- There is no option for this backend.
- </para>
- </sect2>
- <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 <acronym>PHP</acronym> or Zend Framework at all.
- </para>
- <note>
- <para>
- <classname>Zend_Cache_Frontend_Capture</classname> operates
- by registering a callback function to be called
- when the output buffering it uses is cleaned. In order for this to operate
- correctly, it must be the final output buffer in the request. To guarantee
- this, the output buffering used by the Dispatcher <emphasis>must</emphasis> be
- disabled by calling <classname>Zend_Controller_Front</classname>'s
- <methodname>setParam()</methodname> method, for example,
- <command>$front->setParam('disableOutputBuffering', true);</command> or adding
- "resources.frontcontroller.params.disableOutputBuffering = true"
- to your bootstrap configuration file (assumed <acronym>INI</acronym>) if using
- <classname>Zend_Application</classname>.
- </para>
- </note>
- <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 <filename>.htaccess</filename> 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
- <filename>./public/cached</filename>. 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
- <acronym>URI</acronym>, 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 <methodname>save()</methodname> accept an ID which
- is calculated by applying <methodname>bin2hex()</methodname> to a request
- <acronym>URI</acronym>.
- </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
- <acronym>URI</acronym> 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 <constant>Zend_Cache_Manager::PAGECACHE</constant> 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
- <acronym>PHP</acronym> 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><constant>NULL</constant></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>0600</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>'<filename>.html</filename>'</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 or serialization manually.
- </entry>
- </row>
- <row>
- <entry><emphasis>index_filename</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'index'</entry>
- <entry>
- If a request <acronym>URI</acronym> does not contain sufficient
- information to construct a static file (usually this means an index
- call, e.g. <acronym>URI</acronym> of '/'), the index_filename is used
- instead. So '' or '/' would map to '<filename>index.html</filename>'
- (assuming the default file_extension is '<filename>.html</filename>').
- </entry>
- </row>
- <row>
- <entry><emphasis>tag_cache</emphasis></entry>
- <entry><type>Object</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Used to set an 'inner' cache utilised to store tags
- and file extensions associated with static files. This
- <emphasis>must</emphasis> 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><constant>FALSE</constant></entry>
- <entry>
- If set to <constant>TRUE</constant>, 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>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|