Perfomace na aplicação

Tem alguma diferenca de perfomace em usar:

CHtml::image() ao inves da tag <img src> direto.

E outra coisa estou começando uma aplicação como sabe de um site, e o meu servidor de hospedagem nao tem nenhum acelerador de codigo instalado, vc poderia me dar algumas dicas como eu posso melhorar a perfomace do site que estou desenvolvendo emm Yii, tipo configuraçoes internas do framework. Tipo utilizar Helpers para montar a tag é melhor.

Resumindo tudo gostaria de começar esta aplicaçao com as configuraçoes correta para obter o maximo de desempenho do meu site pois um site lento ninguem merece…

Valeu mesmo desde já

Tudo o que vc fizer com um helper, fará na mão e usar Helpers é sempre mais lento. Mas assim mesmo eu acho que não compensa fazer na mão o html dos componentes, pq dificulta a manutenção e abre mais possibilidades de erros :)

Evitende que não da pra ser exagerado e usar CHtml::tag pra tudo, mas principalmente em campos de formulários, agiliza o desenvolvimento e da mais segurança, principalmente se vc usa como eu helpers mais complexos como o autocomplete.

Cache fazem falta. Na falta de uma opção como o memcache ou eAccelerator, vc pode usar o CDBCache (Criando uma tabela em memória de preferência, caso seu SGDB suporte) ou usar o CFileCache.

Bom tb modificar no seu index, quando em produção, retirar a constante de debug, apontar para o arquivo yiilite.php do framework (Que por ser apenas 1 arquivo, tem um tempo de carregamento menor).

O resto é contigo mesmo. Aplicativos desenvolvidos com Yii normalmente tem bom desempenho comparado a outros Fws. Não da pra precisar exatamente o quanto(Apesar que aqui no site tem um comparativo, mas acho exagerado), mas pelo que já vi do Yii, do Symphony e do Zend, o Yii é o que tem um menor ciclo, justamente por ser mais simples do que os outros, o que torna ele performático.

O principal mesmo é habilitar o cache e desabilitar o DEBUG. De resto, o Yii dá conta numa boa.

Como faço para habilitar o cache, vi na documentação mais eu nao entendi.

Ja desativei o Debug e coloquei o yiilite no index. So falta o cache que nao sei como proceder.

Valews

Pra habilitar o cache, é muito difícil :)

dar um pequeno exemplo da dificuldade habilitando o cache em arquivo. :) hauhauhua


'cache'=>array(

      'class'=>'system.caching.CFileCache',

    ),

 

é só alterar na seção dos componentes no arquivo de configuração.

A config é válida pras funções Yii::app()->cache->get e Yii::app()->cache->set, que usam o cache padrão do sistema.

Nada impede também vc de instanciar a classe de cache onde vc precisa e usar um cache específico pra um determinado momento sem ser o padrão.

Ve se eu entendi, ativo atraves do codigo acima no arquivo config/main.php, na sessao components, certo.

So para eu enterder com esta configuração ele estara colocando todas as pagina do site em cache. por exemplo o layout sempre será a mesma coisa, so que o conteudo será dinamicos em algumas paginas, so que outras não.

Eu teria que chamar alguma funçao no controller destas paginas para que o seu carregamento seja mais rapido…

Tipo eu ativo, e depois eu tenho que fazer alguma coisa nos controlles ou ate mesmo nas views.

Devagar chego lá.

Agradeço a paciencia de vcs.

Não … tem várias formas, tipos e aplicabilidades pro cache…

Isso ai só define o mecanismo de cache padrão que o Yii vai usar.

Da uma olhada no link, na parte de cache.

http://www.yiiframework.com/doc/guide/pt/caching.overview

Primeiramente quero pedir desculpa por eu ser muito leigo em enterder a documentação do yii. estou aprendendo muito é com vcs :D

Tipo vc poderia dar um exemplo na pratica como usar o cache de pagina e de conteudo dinamico. tipo onde eu coloco cada codigo…

Agradeço muito.

Daqui uns dias eu chego lá… :) com ajudar de vcs.

Eu nem uso as variáveis de cache do Yii…

Para mim, a grande vantagem no uso do cache é na carga dos Active Records.

Sem cache, o Yii sempre irá no banco carregar os metadados das tabelas.

Com cache, o Yii carrega os metadados uma única vez e depois passa a utilizar as definições do cache. Fica muuuuuito mais rápido (pelo menos com o Oracle, que eu utilizo).

Ah! Por falar nisso, falta uma configuração importante no main.php:




'components'=>array(

            'db'=>array(

                ...

                'schemaCachingDuration' => 600,

            ),

        ),



No schemaCachingDuration vc define, em segundos, o tempo de cache dos metadados.

EDIT: cache de página eu só acho útil nos casos em que vc tem uma página cujos dados são demorados para processar e que não possuem grande frequência de modificações.

‘cache’=>array(

  'class'=&gt;'system.caching.CFileCache',


),

Tipo se eu usar a configuraçao acima e em alguma partes do meu site eu usar a configuraçao abaixo vai dar certo:

<?php if($this->beginCache(‘cabecalho’, array(‘duration’=>3600))) { ?>

…conteudo…

<?php $this->endCache(); } ?>

pois gostaria de saber se a logica esta correta, pois coloquei e nao deu nenhum erro, mas vai que estou cometendo algum erro e isso que fiz nao vai fazer diferença.

E onde ele grava os arquivos de cache?

Ta certo sim. O menu da minha aplicação é dinâmico, e uso de forma parecida pra não ficar gerando ele a cada requisição :)

Valeu brows