Hay tres conceptos clave en Zend_Cache. Uno es el identificador
único (una cadena) que se usa para identificar los registros de caché. El segundo es la
directiva 'lifetime', tal como se ve en los ejemplos; define durante cuánto tiempo
el recurso cacheado se considera 'fresco'. El tercer concepto clave es la ejecución condicional para
que partes de su código puedan omitirse por completo, mejorando el rendimiento. La función principal del
frontend (por ejemplo, Zend_Cache_Core::get()) siempre está diseñada para devolver
FALSE en caso de fallo de caché si eso tiene sentido para la naturaleza de un
frontend. Eso permite
a los usuarios finales envolver las partes del código que desean cachear (y omitir) en
instrucciones if(){ ... } donde la condición es
el propio método de Zend_Cache. Al final de dichos bloques, sin embargo, debe guardar
lo que ha generado (por ejemplo, Zend_Cache_Core::save()).
![]() |
Nota |
|---|---|
El diseño de ejecución condicional de su código de generación no es necesario en algunos frontends (Function, por ejemplo) cuando toda la lógica se implementa dentro del frontend. |
![]() |
Nota |
|---|---|
'Acierto de caché' (cache hit) es un término para una condición en la que un registro de caché se encuentra, es válido y está 'fresco' (en otras palabras, no ha expirado todavía). 'Fallo de caché' (cache miss) es todo lo demás. Cuando ocurre un fallo de caché, debe generar sus datos (como haría normalmente) y almacenarlos en caché. Cuando tiene un acierto de caché, en cambio, el backend obtiene el registro de la caché de forma transparente y automática. |
Una buena manera de construir una instancia utilizable de un frontend de
Zend_Cache se muestra en el siguiente ejemplo:
// We choose a backend (for example 'File' or 'Sqlite'...)
$backendName = '[...]';
// We choose a frontend (for example 'Core', 'Output', 'Page'...)
$frontendName = '[...]';
// We set an array of options for the chosen frontend
$frontendOptions = array([...]);
// We set an array of options for the chosen backend
$backendOptions = array([...]);
// We create an instance of Zend_Cache
// (of course, the two last arguments are optional)
$cache = Zend_Cache::factory($frontendName,
$backendName,
$frontendOptions,
$backendOptions);
En los siguientes ejemplos asumiremos que la variable $cache
contiene un frontend válido e instanciado como se muestra, y que usted entiende cómo pasar
parámetros a los backends que elija.
![]() |
Nota |
|---|---|
Utilice siempre |
Las etiquetas (tags) son una forma de categorizar los registros de caché. Cuando guarda una caché con el
método save(), puede establecer un array de etiquetas para aplicar a este
registro. Después podrá limpiar todos los registros de caché etiquetados con una etiqueta (o
etiquetas) determinada:
$cache->save($huge_data, 'myUniqueID', array('tagA', 'tagB', 'tagC'));
![]() |
Nota |
|---|---|
observe que el método |
Para eliminar o invalidar un id de caché en particular, puede usar el
método remove():
$cache->remove('idToRemove');
Para eliminar o invalidar varios ids de caché en una sola operación, puede usar el
método clean(). Por ejemplo, para eliminar todos los registros de caché:
// clean all records $cache->clean(Zend_Cache::CLEANING_MODE_ALL); // clean only outdated $cache->clean(Zend_Cache::CLEANING_MODE_OLD);
Si desea eliminar las entradas de caché que coincidan con las etiquetas 'tagA' y 'tagC':
$cache->clean(
Zend_Cache::CLEANING_MODE_MATCHING_TAG,
array('tagA', 'tagC')
);
Si desea eliminar las entradas de caché que no coincidan con las etiquetas 'tagA' o 'tagC':
$cache->clean(
Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
array('tagA', 'tagC')
);
Si desea eliminar las entradas de caché que coincidan con las etiquetas 'tagA' o 'tagC':
$cache->clean(
Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,
array('tagA', 'tagC')
);
Los modos de limpieza disponibles son: CLEANING_MODE_ALL,
CLEANING_MODE_OLD, CLEANING_MODE_MATCHING_TAG,
CLEANING_MODE_NOT_MATCHING_TAG y
CLEANING_MODE_MATCHING_ANY_TAG. Estos últimos, como sus nombres
sugieren, se combinan con un array de etiquetas en las operaciones de limpieza.
![[Note]](images/note.png)