Usando Fragments no Kohana

Fragments é um recurso muito bacana que está disponível no framework Kohana desde a versão 3.0, que permite de forma simples e rápida fazer cache de alguma view ou trecho HTML.

Basicamente você pode usar Fragments quando o tempo de leitura do fragmento for menor do que o tempo de geração do mesmo contéudo. Isso pode ser muito útil naqueles casos onde você tem um menu ou parte do seu layout que pode ser processada uma única vez e sempre ser carregada de um cache em vez de ser processada a view a cada requisição.

Como usar

Vamos usar o exemplo do menu:

// Cache do fragmento por 10 minutos
if (!Fragment::load('viewMenu', Date::MINUTE * 10))
{
	// Tudo até a chamada Fragment::save() será gravado como fragmento
	echo html::anchor('inicio','Início');
	echo html::anchor('kohana','Kohana');
	echo html::anchor('plugins','Plugins');
	echo html::anchor('contato','Contato');

	// Salva o fragmento em cache
	Fragment::save();
}

O código já comentado fica bem mais fácil do que explicar :)
Simplificando, funciona da seguinte forma:

  1. Fragment::load() tenta carregar o fragmento do cache
  2. Se não encontrar retornará false, e ficará aguardando o trecho a ser guardado neste fragmento até a chamada Fragment::save()
  3. O padrão de armazenamento de cada fragmento é 30 segundos, mas você pode especificar um timeout na chamada Fragment::load()
  4. Você pode forçar um fragmento ser excluído usando Fragment::delete() ou usando timeout como zero
Kohana Fragments, exemplo de uso

Sem inspiração pra uma imagem, postei o código de exemplo :)

Não é interessante usar Fragments para guardar variáveis, objetos ou ainda resultados de banco de dados. Para objetos mais complexos o módulo Cache é muito mais robusto e eficiente.

É simples, é Kohana!
É por isso que eu gosto :)

Related Posts with Thumbnails

5 thoughts on “Usando Fragments no Kohana

    • Matheus,

      Estou trabalhando num projeto que usam vários widgets, e desenvolver eles usando Fragments houve um ganho de performance muito grande. Como é um recurso pouco usado, resolvi compartilhar escrevendo o post, vale a pena.

      Um abraço e obrigado pela visita!

  1. Legal essa feature. Já vi ela em outros frameworks e é bem útil
    Uma dúvida. Um fragmento pode ser um trecho de HTML simples?

    • É possível sim.

      Mas fazer cache de um HTML direto em disco (Fragments usa cache em disco) não sei se vai retornar muito ganho de performance.
      Neste caso acho que o Cache mesmo é mais efetivo, pois tem drivers que permitem guardar em memória RAM (APC, XCache, Memcache).

      Abraço :)

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>