| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.cache.theory">
- <title>Aspect théorique</title>
- <para>
- Il y a trois concepts clés dans <classname>Zend_Cache</classname>. Le premier est
- l'identifiant unique (une chaîne) qui est utilisé pour identifier les enregistrements de
- cache. Le second est la directive <emphasis>"lifeTime"</emphasis> vue dans les
- exemples ; elle définit combien de temps la ressource de cache est considérée comme à
- jour. Le troisième est l'exécution conditionnelle, ainsi chaque partie de votre code peut
- être évitée entièrement, pour améliorer les performances. La fonction principale du
- frontend (<methodname>Zend_Cache_Core::get()</methodname>) est toujours faite pour retourner
- <constant>FALSE</constant> en cas de cache manquant, si cela donne du sens à la nature d'un
- frontend. Cela permet aux utilisateurs d'entourer des parties de code qu'ils veulent mettre
- en cache (et éviter) dans une instruction
- <emphasis><methodname>if()</methodname>{ ... }</emphasis> où la condition est une
- méthode <classname>Zend_Cache</classname>. A la fin de ces blocs, vous devez sauvegarder ce
- que vous avez généré (par exemple <methodname>Zend_Cache_Core::save()</methodname>).
- </para>
- <note>
- <para>
- Le design de l'exécution conditionnelle de votre code généré n'est pas forcément
- dans des frontends (<emphasis>Function</emphasis>, par exemple) quand toute la logique
- est implémentée à l'intérieur du frontend.
- </para>
- </note>
- <note>
- <para>
- Le "Cache hit" est un terme pour une condition quand l'enregistrement de cache
- est trouvé, valide, et à jour (en d'autres mots, qu'il n'a pas encore expiré). Le
- "Cache miss" est tout le reste. Lorsque un "Cache miss" survient, vous devez générer
- vos données (comme vous le feriez normalement) et les mettre en cache. Lorsque vous
- avez un "Cache hit", le backend récupère pour vous et de façon transparente, les
- enregistrements.
- </para>
- </note>
- <sect2 id="zend.cache.factory">
- <title>La méthode de fabrique de Zend_Cache</title>
- <para>
- Une bonne manière de construire une instance utilisable d'un frontend
- <classname>Zend_Cache</classname> est donnée dans l'exemple suivant :
- </para>
- <programlisting language="php"><![CDATA[
- // Nous choisissons un backend (par exemple 'File' ou 'Sqlite')
- $backendName = '[...]';
- // Nous choisissons un frontend (par exemple: 'Core', 'Output',
- // 'Page'...)
- $frontendName = '[...]';
- // Nous définissons un tableau d'options pour le frontend choisit
- $frontendOptions = array([...]);
- // Nous définissons un tableau d'options pour le banckend choisit
- $backendOptions = array([...]);
- // Nous créons la bonne instance
- // Bien sur, les deux derniers arguments sont optionnels
- $cache = Zend_Cache::factory($frontendName,
- $backendName,
- $frontendOptions,
- $backendOptions);
- ]]></programlisting>
- <para>
- Dans les exemples suivants, nous nous assurerons que la variable
- <varname>$cache</varname> utilise une instance de frontend valide, et que vous
- comprenez comment passer des paramètres à vos backends.
- </para>
- <note>
- <para>
- Utilisez toujours <methodname>Zend_Cache::factory()</methodname> pour obtenir des
- instances de frontend. Instancier des frontends et des backends par vous-même ne
- fonctionnera pas comme prévu.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.cache.tags">
- <title>Baliser les enregistrements</title>
- <para>
- Les balises sont un moyen de catégoriser les enregistrements de cache. Quand vous
- sauvegardez un cache avec la méthode <methodname>save()</methodname> vous pouvez
- définir un tableau de balises qui s'appliqueront à cet enregistrement. Ensuite vous
- serez en mesure de nettoyer tous les enregistrements de cache identifiés par
- une balise (ou plusieurs) donnée :
- </para>
- <programlisting language="php"><![CDATA[
- $cache->save($grande_donnees,
- 'monIDUnique',
- array('tagA', 'tagB', 'tagC'));
- ]]></programlisting>
- <note>
- <para>
- Notez que la méthode <methodname>save()</methodname> accepte un quatrième paramètre
- optionnel : <varname>$specificLifetime</varname> (si différent de
- <constant>FALSE</constant>, il affecte un "lifeTime" spécifique pour
- cet enregistrement de cache particulier).
- </para>
- </note>
- </sect2>
- <sect2 id="zend.cache.clean">
- <title>Nettoyer le cache</title>
- <para>
- Pour supprimer / invalider un identifiant de cache particulier, vous pouvez
- utiliser la méthode <methodname>remove()</methodname> :
- </para>
- <programlisting language="php"><![CDATA[
- $cache->remove('idAEffacer');
- ]]></programlisting>
- <para>
- Pour effacer / invalider plusieurs identifiants de caches en une seule
- opération, vous pouvez utiliser la méthode <methodname>clean()</methodname>. Par
- exemple, pour supprimer tous les caches :
- </para>
- <programlisting language="php"><![CDATA[
- // nettoie tous les enregistrements
- $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
- // nettoie uniquement les caches obsolètes
- $cache->clean(Zend_Cache::CLEANING_MODE_OLD);
- ]]></programlisting>
- <para>
- Si vous voulez effacer les caches correspondant aux balises "tagA" et "tagC" :
- </para>
- <programlisting language="php"><![CDATA[
- $cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,
- array('tagA', 'tagC'));
- ]]></programlisting>
- <para>
- Si vous voulez effacer les caches ne correspondant pas aux balises "tagA" et
- "tagC" :
- </para>
- <programlisting language="php"><![CDATA[
- $cache->clean(Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
- array('tagA', 'tagC'));
- ]]></programlisting>
- <para>
- Si vous voulez effacer les caches correspondant aux balises "tagA" ou "tagC" :
- </para>
- <programlisting language="php"><![CDATA[
- $cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,
- array('tagA', 'tagC'));
- ]]></programlisting>
- <para>
- Les modes disponibles de nettoyage sont <constant>CLEANING_MODE_ALL</constant>,
- <constant>CLEANING_MODE_OLD</constant>, <constant>CLEANING_MODE_MATCHING_TAG</constant>,
- <constant>CLEANING_MODE_NOT_MATCHING_TAG</constant> et
- <constant>CLEANING_MODE_MATCHING_ANY_TAG</constant>. Les derniers, comme leur nom
- l'indique, sont à combiner avec un tableau de balises pour réaliser les opérations de
- nettoyage.
- </para>
- </sect2>
- </sect1>
|