Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
6e7cd9fd
Commit
6e7cd9fd
authored
Oct 19, 2014
by
Alexander Makarov
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5640 from pana1990/guide-es
update caching-fragment.md [skip ci]
parents
49760b64
c55cd6d8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
38 deletions
+37
-38
caching-fragment.md
docs/guide-es/caching-fragment.md
+37
-38
No files found.
docs/guide-es/caching-fragment.md
View file @
6e7cd9fd
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 la
s
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é <a name="caching-options"></a>
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, est
a 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, est
e 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 <a name="duration"></a>
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 <a name="dependencies"></a>
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
sigui
ente 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
sigui
daente 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 <a name="variations"></a>
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 deber
e 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é <a name="toggling-caching"></a>
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, podr
i
as 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é Anidad
o
<a name="nested-caching"></a>
## Almacenamiento en Caché Anidad
a
<a name="nested-caching"></a>
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 anidado
s. 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 evaluad
o como válido, seguiría proporcionando la misma copia en caché incluso después de que el contenido en el
caché intern
o haya sido invalidado
. Por lo tanto, hay que tener mucho cuidado al configurar el tiempo de duración o las
dependencias de l
os cachés anidados, de lo contrario los fragmentos internos que ya estén obsolete
s se pueden seguir
Existen diferentes opciones de configuración
para las cachés anidada
s. 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 evaluad
a como válida, seguiría proporcionando la misma copia en caché incluso después de que el contenido en la
caché intern
a haya sido invalidada
. Por lo tanto, hay que tener mucho cuidado al configurar el tiempo de duración o las
dependencias de l
as cachés anidadas, de lo contrario los fragmentos internos que ya estén obsoleto
s se pueden seguir
manteniendo en el fragmento externo.
## Contenido Dinámico <a name="dynamic-content"></a>
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.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment