Ou seja, encapsule a lógica de geração do conteúdo entre as chamadas [[yii\base\View::beginCache()|beginCache()]]
e [[yii\base\View::endCache()|endCache()]]. Se o conteúdo for encontrado em cache, [[yii\base\View::beginCache()|beginCache()]] renderizará o conteúdo em cache e retornará falso, e assim não executará a lógica de geração de conteúdo.
Caso contrário, o conteúdo será gerado, e quando [[yii\base\View::endCache()|endCache()]] for chamado, o conteúdo gerado será capturado e armazenado no cache.
Assim como [cache de dados](caching-data.md), uma `$id` única é necessária para identificar um conteúdo no cache.
## Opções do Cache <span id="caching-options"></span>
Você poderá especificar opções adicionais sobre o cache de fragmentos passando um array de opções como o segundo parâmetro do método [[yii\base\View::beginCache()|beginCache()]]. Por trás dos panos, este array de opções será usado para configurar um widget [[yii\widgets\FragmentCache]] que implementa, por sua vez, a funcionalidade de cache de fragmentos.
Ela especifica por quantos segundos o conteúdo pode permanecer válido no cache. O código a seguir armazena em cache o fragmento do conteúdo por até uma hora:
```php
if ($this->beginCache($id, ['duration' => 3600])) {
O conteúdo armazenado em cache pode variar de acordo com alguns parâmetros. Por exemplo, para uma aplicação Web que suporta múltiplos idiomas, a mesma porção de código de uma view pode gerar conteúdo diferente para cada idioma.
Desta forma, você pode desejar que o código em cache exibisse um conteúdo diferente para a idioma exibido na requisição.
Cache de fragmentos pode ser aninhado. Isto é, um fragmento em cache pode estar contido em outro fragmento que também está em cache. Por exemplo, os comentários estão sendo armazenados em um cache de fragmento inserido em conjunto com o conteúdo do *post* em outro cache de fragmento. O código a seguir exibe como dois caches de fragmento podem ser aninhados.
Ao usar o cache de fragmentos, você pode encontrar-se na situação em que um grande fragmento de conteúdo é
relativamente estático exceto por alguns lugares. Por exemplo, um cabeçalho de uma página pode exibir
a barra do menu principal junto ao nome do usuário logado. Outro problema é que o conteúdo sendo armazenado em cache
pode conter código PHP que deve ser executado para cada requisição (ex., o código para registrar um *pacote de recursos estáticos* (asset bundles)). Ambos os problemas podem ser resolvidos com a funcionalidade, então chamada de *Conteúdos Dinâmicos*.
Um conteúdo dinâmico compreende um fragmento de uma saída que não deveria ser armazenada em cache mesmo que esteja encapsulada em um cache de fragmento. Para fazer o conteúdo dinâmico indefinidamente, este deve ser gerado pela execução de