From c55cd6d8a32897ee994399979ad698666dfc4ae8 Mon Sep 17 00:00:00 2001 From: pana1990 Date: Sat, 18 Oct 2014 23:02:50 +0200 Subject: [PATCH] update caching-fragment.md [skip ci] --- docs/guide-es/caching-fragment.md | 75 +++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/docs/guide-es/caching-fragment.md b/docs/guide-es/caching-fragment.md index 1314d34..b0a0c00 100644 --- a/docs/guide-es/caching-fragment.md +++ b/docs/guide-es/caching-fragment.md @@ -1,12 +1,12 @@ Caché de Fragmentos =================== -Caché de Fragmentos se refiere al almacenamiento en caché de un fragmento, o sección, de una página Web. Por ejemplo, si -una página muestra un sumario de la ventas anuales en una tabla, podrías guardar esta tabla en memoria caché para -eliminar el tiempo necesario para generar esta tabla en cada petición (request). El caché de fragmentos está construido -sobre el [caché de datos](caching-data.md). +La Caché de Fragmentos se refiere al almacenamiento en caché de un fragmento, o sección, de una página Web. Por ejemplo, si +una página muestra un sumario de las ventas anuales en una tabla, podrías guardar esta tabla en memoria caché para +eliminar el tiempo necesario para generar esta tabla en cada petición (request). La caché de fragmentos está construido +sobre la [caché de datos](caching-data.md). -Para usar el caché de fragmentos, utiliza el siguiente código en tu [vista](structure-views.md): +Para usar la caché de fragmentos, utiliza el siguiente código en tu [vista (view)](structure-views.md): ```php @@ -18,28 +18,28 @@ if ($this->beginCache($id)) { } ``` -Es decir, encierra la lógica de la generación del contenido entre las llamadas a [[yii\base\View::beginCache()|beginCache()]] y +Es decir, encierra la lógica de la generación del contenido entre las llamadas [[yii\base\View::beginCache()|beginCache()]] y [[yii\base\View::endCache()|endCache()]]. Si el contenido se encuentra en la memoria caché, [[yii\base\View::beginCache()|beginCache()]] mostrará el contenido y devolverá `false`, saltandose así la lógica de generación del contenido. De lo contrario, el -código de generación se ejecutaría y al alcanzar la llamada a [[yii\base\View::endCache()|endCache()]], el contenido +código de generación se ejecutaría y al alcanzar la llamada [[yii\base\View::endCache()|endCache()]], el contenido generado será capturado y almacenado en la memoria caché. -Como en [caché de datos](caching-data.md), un `$id` (clave) único es necesario para identificar un contenido guardado en +Como en la [caché de datos](caching-data.md), un `$id` (clave) único es necesario para identificar un contenido guardado en caché. ## Opciones de Caché -Puedes especificar opciones adicionales para el caché de fragmentos pasando la matriz (array) de opciones como segundo -parametro del método [[yii\base\View::beginCache()|beginCache()]]. Entre bastidores, esta matriz de opciones se utiliza -para configurar el widget [[yii\widgets\FragmentCache]] que es en realidad el que implementa la funcionalidad de caché +Puedes especificar opciones adicionales para la caché de fragmentos pasando el array de opciones como segundo +parametro del método [[yii\base\View::beginCache()|beginCache()]]. Entre bastidores, este array de opciones se utiliza +para configurar el widget [[yii\widgets\FragmentCache]] que es en realidad el que implementa la funcionalidad de la caché de fragmentos. ### Duración -Quizás la opción más utilizada en el caché de fragmentos es [[yii\widgets\FragmentCache::duration|duración]]. Ésta +Quizás la opción más utilizada en la caché de fragmentos es [[yii\widgets\FragmentCache::duration|duración]]. Ésta especifica cuántos segundos el contenido puede permanecer como válido en la memoria caché. El siguiente código almacena -en caché el fragmento de contenido para una hora a lo sumo: +en la caché el fragmento de contenido para una hora a lo sumo: ```php if ($this->beginCache($id, ['duration' => 3600])) { @@ -50,19 +50,18 @@ if ($this->beginCache($id, ['duration' => 3600])) { } ``` -Si la opción no está activada, se tomará el valor por defecto 0, lo que significa que el contenido almacenado en caché -nunca expirará. +Si la opción no está activada, se tomará el valor por defecto 60, lo que significa que el contenido almacenado en caché expirará en 60 segundos. ### Dependencias -Como en [caché de datos](caching-data.md#cache-dependencies), fragmento de contenido que está siendo almacenado en caché +Como en la [caché de datos](caching-data.md#cache-dependencies), el fragmento de contenido que está siendo almacenado en caché también puede tener dependencias. Por ejemplo, el contenido de un artículo que se muestre depende de si el mensaje se modifica o no. Para especificar una dependencia, activa la opción [[yii\widgets\FragmentCache::dependency|dependencia]] (dependency), -que puede ser un objecto [[yii\caching\Dependency]] o la matriz de configuración para crear un objecto `Dependency`. El -siguiente código especifica que el caché de fragmento depende del cambio del valor de la columna `updated_at`: +que puede ser un objecto [[yii\caching\Dependency]] o un array de configuración para crear un objecto `Dependency`. El +siguidaente código especifica que la caché de fragmento depende del cambio del valor de la columna `updated_at`: ```php $dependency = [ @@ -82,13 +81,13 @@ if ($this->beginCache($id, ['dependency' => $dependency])) { ### Variaciones El contenido almacenado en caché puede variar de acuerdo a ciertos parámetros. Por ejemplo, para una aplicación Web que -soporte multiples idiomas, la misma pieza del código de la vista (View) puede generar el contenido almacenado en caché +soporte multiples idiomas, la misma pieza del código de la vista puede generar el contenido almacenado en caché en diferentes idiomas. Por lo tanto, es posible que desees hacer variaciones del mismo contenido almacenado en caché de acuerdo con la actual selección del idioma en la aplicación. Para especificar variacioens en la memoria caché, configura la opción [[yii\widgets\FragmentCache::variations|variaciones]] -(variations), la cual debere ser una matriz de valores escalares, cada uno de ellos representando un factor de variación. -Por ejemplo, para hacer que el contenido almacenado en caché varie por lenguaje, podrías usar el siguiente código: +(variations), la cual deberá ser un array de valores escalares, cada uno de ellos representando un factor de variación. +Por ejemplo, para hacer que el contenido almacenado en la caché varie por lenguaje, podrías usar el siguiente código: ```php if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { @@ -102,10 +101,10 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) { ### Alternando el Almacenamiento en Caché -Puede que a veces quieras habilitar el caché de fragmentos únicamente cuando ciertas condiciones se cumplan. Por ejemplo, -para una página que muestra un formulario, tal vez quieras guardarlo en caché cuando es inicialmente solicitado (a +Puede que a veces quieras habilitar la caché de fragmentos únicamente cuando ciertas condiciones se cumplan. Por ejemplo, +para una página que muestra un formulario, tal vez quieras guardarlo en la caché cuando es inicialmente solicitado (a través de una petición GET). Cualquier muestra posterior (a través de una petición POST) del formulario no debería ser -almacenada en caché ya que el formulario puede que contenga entradas del usuario. Para hacerlo, podrias configurar la +almacenada en caché ya que el formulario puede que contenga entradas del usuario. Para hacerlo, podrías configurar la opción de [[yii\widgets\FragmentCache::enabled|activado]] (enabled), de la siguiente manera: ```php @@ -118,7 +117,7 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) { ``` -## Almacenamiento en Caché Anidado +## Almacenamiento en Caché Anidada El almacenamiento en caché de fragmentos se puede anidar. Es decir, un fragmento de caché puede ser encerrado dentro de otro fragmento que también se almacena en caché. Por ejemplo, los comentarios se almacenan en una caché de fragmento @@ -143,27 +142,27 @@ if ($this->beginCache($id1)) { } ``` -Existen diferentes opciones de configuración de para los cachés anidados. Por ejemplo, las cachés internas y las cachés -externas pueden usar diferentes valores de duración. Aún cuando los datos almacenados en el caché externo sean invalidados, -el caché interno puede todavía proporcionar un fragmento válido. Sin embargo, no podría ser viceversa. Si el caché externo -es evaluado como válido, seguiría proporcionando la misma copia en caché incluso después de que el contenido en el -caché interno haya sido invalidado. Por lo tanto, hay que tener mucho cuidado al configurar el tiempo de duración o las -dependencias de los cachés anidados, de lo contrario los fragmentos internos que ya estén obsoletes se pueden seguir +Existen diferentes opciones de configuración para las cachés anidadas. Por ejemplo, las cachés internas y las cachés +externas pueden usar diferentes valores de duración. Aún cuando los datos almacenados en la caché externa sean invalidados, +la caché interna puede todavía proporcionar un fragmento válido. Sin embargo, al revés no es cierto. Si la caché externa +es evaluada como válida, seguiría proporcionando la misma copia en caché incluso después de que el contenido en la +caché interna haya sido invalidada. Por lo tanto, hay que tener mucho cuidado al configurar el tiempo de duración o las +dependencias de las cachés anidadas, de lo contrario los fragmentos internos que ya estén obsoletos se pueden seguir manteniendo en el fragmento externo. ## Contenido Dinámico -Cuando se usa el caché de fragmentos, podrías encontrarte en la situación que un fragmento grande de contenido es -relavitamente estático excepto en uno u otro lugar. Por ejemplo, el cabezal de una página (header) puede que muestre el +Cuando se usa la caché de fragmentos, podrías encontrarte en la situación que un fragmento grande de contenido es +relavitamente estático excepto en uno u otro lugar. Por ejemplo, la cabeza de una página (header) puede que muestre el menú principal junto al nombre del usuario actual. Otro problema es que el contenido que está siendo almacenado en caché -puede que contenga código PHP que debe ser ejecutado en cada petición (request) (por ejemplo, el código para registrar +puede que contenga código PHP que debe ser ejecutado en cada petición (por ejemplo, el código para registrar un paquete de recursos (asset bundle)). En ambos casos, podríamos resolver el problema con lo que llamamos la característica de *contenido dinámico*. -Como *contenido dinámico* entendemos a un fragmento de salida que no debería ser guardado en caché incluso si está +Entendemos *contenido dinámico* como un fragmento de salida que no debería ser guardado en caché incluso si está encerrado dentro de un fragmento de caché. Para hacer el contenido dinámico todo el tiempo, éste ha de ser generado ejecutando -cierto código PHP en cada petición (request), incluso si el contenido está siendo mostrado desde el caché. +cierto código PHP en cada petición, incluso si el contenido está siendo mostrado desde la caché. Puedes llamar a [[yii\base\View::renderDynamic()]] dentro de un fragmento almacenado en caché para insertar código dinámico en el lugar deseado como, por ejemplo, de la siguiente manera, @@ -182,5 +181,5 @@ if ($this->beginCache($id1)) { ``` El método [[yii\base\View::renderDynamic()|renderDynamic()]] toma una pieza de código PHP como su parámetro. El valor -devuelto del código PHP se trata como contenido dinámico. El mismo código PHP será ejecutado en cada petición (request), -sin importar que esté dentro de un fragmento que está siendo servido desde el caché o no. +devuelto del código PHP se trata como contenido dinámico. El mismo código PHP será ejecutado en cada petición, +sin importar que esté dentro de un fragmento que está siendo servido desde la caché o no.