20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

usuários. Para armazenar em cache o conteú<strong>do</strong> <strong>do</strong> perfil, seria interessante que a cópia<br />

em cache varie de acor<strong>do</strong> com os IDs <strong>do</strong>s usuários. Isso significa que devemos utilizar<br />

IDs diferentes ao chamar o méto<strong>do</strong> beginCache().<br />

Em vez de deixar para os desenvolve<strong>do</strong>res o controle sobre a variação desses IDs, a<br />

classe COutputCache já possui esse recurso. Abaixo, um resumo:<br />

• varyByRoute: mudan<strong>do</strong> seu valor para true, o conteú<strong>do</strong> em cache irá variar de<br />

acor<strong>do</strong> com a rota. Dessa forma, cada combinação de controle/ação terá seu<br />

conteú<strong>do</strong> armazena<strong>do</strong> em cache separadamente.<br />

• varyBySelection: mudan<strong>do</strong> seu valor para true, podemos fazer com que o conteú<strong>do</strong><br />

em cache varie de acor<strong>do</strong> com os IDs da sessão. Dessa forma, cada sessão de<br />

usuário pode ter conteú<strong>do</strong>s diferentes e to<strong>do</strong>s servi<strong>do</strong>s através <strong>do</strong> cache.<br />

• varyByParam: ao atribuir um vetor de nomes a essa opção, podemos fazer com que<br />

o conteú<strong>do</strong> <strong>do</strong> cache varie de acor<strong>do</strong> com valores passa<strong>do</strong>s através de GET. Por<br />

exemplo, se uma página exibe o conteú<strong>do</strong> de um post de acor<strong>do</strong> com a variável<br />

GET id, podemos definir varyByParam comoarray('id'), assim podemos armazenar<br />

em cache o conteú<strong>do</strong> de cada post. Sem esse tipo de variação, poderíamos apenas<br />

armazenar um único post.<br />

• varyByExpression: ao atribuir uma expressão PHP a essa opção, podemos fazer<br />

com que o conteú<strong>do</strong> <strong>do</strong> cache varie de acor<strong>do</strong> com o resulta<strong>do</strong> dessa expressão.<br />

Essa opção está disponível a partir da versão 1.0.4.<br />

Tipos de Requisição<br />

As vezes, queremos que o cache de fragmentos esteja habilita<strong>do</strong> somente para certos<br />

tipos de requisições. Por exemplo, para uma página exibin<strong>do</strong> um formulário, queremos<br />

armazenar o formulário apenas na primeira vez em que a página é requisitada (via GET).<br />

Nas exibições seguintes (via POST), o formulário não deve ser armazena<strong>do</strong> porque ele<br />

pode conter os da<strong>do</strong>s informa<strong>do</strong>s pelos usuários. Para isso, podemos utilizar a opção<br />

requestTypes:<br />

...outro conteú<strong>do</strong> HTML...<br />

<br />

...conteú<strong>do</strong> a ser armazena<strong>do</strong>...<br />

<br />

...outro conteú<strong>do</strong> armazena<strong>do</strong>...<br />

Caching Aninha<strong>do</strong><br />

O caching de fragmentos pode ser aninha<strong>do</strong>. Isso é, um fragmento em cache que está<br />

dentro de um outro fragmento, também em cache. Por exemplo, os comentários estão em<br />

cache, junto <strong>do</strong> conteú<strong>do</strong> <strong>do</strong> post que também está em cache.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!