Posts com a Tag ‘Tableless’
Um portal Joomla preparado para um bombardeio de acessos 3
sexta-feira, 13 de novembro de 2009
No primeiro post Um portal Joomla preparado para um bombardeio de acessos. Vemos que é necessário fazer na garagem, chegou a vez do tanque de combustível
No Segundo post falamos sobre as bases de dados que seria o tanque de combustível.
Agora chegou a vez do Motor e da Lataria
Continuando a nossa busca pela máquina perfeita, vamos agora falar sobre os elementos que podem ser “fuçados” no motor e quais seriam os elementos de design para aumentar a potência e a estabilidade do nosso portal desenvolvido em Joomla.
Falando de motor

O Joomla tem alguns elementos nativos da ferramenta, alguns que ajudam e outros que podem atrapalhar. Com um ajuste fino é possível deixar redondo e obter a melhor performance.
Cachê – Estas funcionalidades ficam no backend do joomla na opção site >> Configuração Global opção sistema. O objetivo da função cachê é diminuir as requisições à base de dados e assim acelerar o acesso, guardando as respostas aos pedidos à base de dados durante um determinado tempo (que o próprio administrador decide). Não entendeu?
Cachê ativado - significa que a resposta ao pedido do browser é dada a partir de um pedido anterior evitando-se novo pedido à base de dados.
Cachê desativada – significa que cada usuário que entrar no site vai consultar o banco de dados para montar a página.
A duração do cachê é uma opção configurável e em geral o melhor que eu indico é:

Session – A configuração desta funcionalidade diz quanto tempo vai durar a seção de acesso criada para cada usuário que visita o site. Neste caso a melhor configuração seria algo em torno de 20 a 80 minutos para que a seção não finalize rapidamente e seja necessário novo processamento para criar uma nova sessão.
Estatística de acesso a banners - O joomla contabiliza todos os acessos e views (visualizações) dos banners o que prejudica e muito a performance. Em websites com milhões de acessos, não tem jeito, temos que perder esta funcionalidade. Imagine um portal com 10 banners na home e 100 acessos simultâneos? Teríamos 1000 updates simultâneos para o MySql executar.
Como corrigir o problema?
Cometendo o pecado de alterar o código do CORE. (Infelizmente)
components/com_banners/banners.php linha 108 a 116
$query = 'UPDATE #__banner'
' SET impmade = impmade + 1'
($expire ? ', showBanner=0' : '')
' WHERE bid = '.(int) $item->bid;
$db->setQuery( $query );
if(!$db->query()) {
JError::raiseError( 500, $db->stderror());
}
Query de busca – O select executado pelo joomla no componente de busca está longe de ser considerado um primor, quando se trata de muitos acessos é claro que isso faz toda a diferença. Além de customizar e melhorar a query de busca uma saída indicada é substituir o select simples que o joomla faz por FULL TEXT. Mas afinal o que seria isso? Trata-se de trocar a consulta comum que é executada pelo JOOMLA e utilizar essa técnica do mysql: MATCH (col1,col2,…) AGAINST (expr [search_modifier])
(http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html).
Detalhe, esta técnica só funciona com tabelas do tipo MyIsam.
Ordering no com_content - O componente com_content faz parte da vida de quem trabalha com o joomla, é ele o responsável pelo cadastramento de conteúdos do site. Existe um problema no administrator que acontece quando; Cadastramos um novo conteúdo, desabilitamos ou o selecionamos para a FrontPage(home). Ao sofrer algumas destas ações o com_content reordena todos os conteúdos, ou seja, desencadeia uma quantidade enorme de up-dates em registros da tabela jos_content. A melhor opção e desabilitar esta funcionalidade automática e somente o fazer quando o usuário der o comando nos gerenciamentos de ordenação disponíveis
Uso indiscriminado de extensões - É impossível dizer com exatidão quantas extensões existem para joomla disponíveis na web. Às vezes a facilidade que algumas delas oferecem para resolver o nosso problema pode se tornar uma dor de cabeça em questões de segurança e performance, a saída não existe. Porém o melhor a se fazer é baixar somente as que estão no joomla.org que hoje são em torno de 3.579. Sempre que optar por usar uma extensão esteja ciente de que ela não é parte do joomla e por isso não é de responsabilidade do core.
Falando de Lataria
É isso, vamos agora falar de design, assim como nos carros o desenho do carro ajuda na estabilidade e na performance.
Abaixo segue um quadro que demonstra as Leis de construção de layouts turbinados
Tableless X tabelas – Use tableless. O código fica menor, quantidade de kbytes da página cai, além de proporcionar uma execução mais uniforme e inteligente do código.
Reutilização de classes CSS – Sempre opte pela construção de código CSS que se utilize de herança, pois isso também vai reduzir a quantidades de linhas e o tamanho dos arquivos. css
Utilização correta para extensões de imagens – Apesar de ser um assunto batido é sempre bom relembrar que PNG e GIF é para Ícones e imagens menores e JPG é para imagens com maior número de cores e mais riqueza de detalhes
Framework javascript – Escolha apenas 1, processar 2 ou mais framework pode afetar o desempenho, pois será necessário fazer esse duplo carregamento
Código CSS em uma linha só – O código CSS edentado é ótimo para programadores, é péssimo para o desempenho, em produção envie o código todo em uma linha só isso vai reduzir o tamanho do arquivo em 60% e representa um ganho mais que relevante de processamento.
Estas práticas vão ajudar e muito no desempenho do portal, finalizo aqui a série de três matérias de melhoria de desempenho em joomla. O conjunto destas ações vai fazer com que o seu portal tenha a força de um trator e a velocidade de um formula 1. O que é isso, um tratormula 1?
Daniel Leandro (twitter @danielleandro).
Agradecimento especial a Rafael Berlanda twitter(@berlanda) e Reinaldo Soares especialistas em performance e segurança joomla do ministério da educação que colaboraram mesmo sem saber com essas séries de artigos.
Últimos posts comentados