underpop

http://underpop.online.fr 2007-10-01  

Otimizando o servidor, o XOOPS, e seus respectivos módulos

Por vezes, as pessoas dizem que o XOOPS é bastante lento e isso pode ser verdade, dependendo de alguns fatores que podem não estar adequados.

O pessoal da Instant Zero mantém alguns portais usando XOOPS, e por isso, decidiu compartilhar os seus conhecimentos e esperamos que você ache útil.
Neste artigo, dividido em 5 pontos, você verá o que você pode fazer em seu site.

1. O servidor

Primeiro analisaremos o servidor e o que você pode fazer por ele.
Dependendo do tipo de servidor que você tem contrato recomendamos que você ative a compressão gzip.
Se o seu servidor estiver rodando Apache 2, então você precisa ativar o módulo deflate.
Não vamos falar de como instalar e usar pois você encontra muitos tutoriais bons sobre isto na internet.

Browsers mais modernos e até alguns nem tão recentes podem solicitar aos servidores Web que enviem a página compactada.
E são muitas as vantagens disso. Em primeiro lugar há menos conexões entre o servidor e o seu navegador e, em segundo lugar, há bem menos tráfego de dados em sua conta.
A contrapartida disso é que o servidor irá trabalhar mais. Mas ele merece!
É como comprimir uma página html com qualquer programa zip e enviá-la para o seu navegador.
Isso é exatamente o mesmo que o seu navegador certamente poderá fazê-lo... Por seu servidor ... Você tem que ver isso com o seu hospedeiro.

Se você puder, recomendamos também que instale e use o Zend Optimizer ou a extensão eAccelerator.
O PHP 6 deve vir com um opcode cache, mas até que isso aconteça tente usar um outro método para ganhar algum tempo.
Com o otimizador Zend (ou qualquer outro sistema de caching opcode), os scripts que são os mais utilizados permanecem na memória em um pré-estado. Assim o seu portal não precisa interpretar de novo o script cada vez que for chamado.
Com uma extensão Php como eAccelerator, todos os scripts PHP chamados pelo seu portal podem ser salvos "compilados" no seu disco. Isso exige tanto espaço em disco como se fossem apenas os scripts (e até um pouco mais), mas é também uma grande ajuda para ter um site mais rápido.

2. XOOPS por si só

O problema com o CMS é que tudo é dinâmico, por isso o banco de dados é frequentemente utilizado, e é também assim com o Xoops.
Mas o XOOPS utiliza um sistema de templates chamado "Smarty" e isto permite-lhe utilizar um sistema de caching.
Este sistema de cache pode causar problemas quando é utilizado em módulos mas pode ser muito útil em seus blocos.
E muitas vezes, sua página inicial usa muitos blocos.
Portanto, não se esqueça de aplicar algumns caches aos seus blocos, você pode fazer isso em Sistema >> Blocos, edite o bloco e selecione uma duração de cache.
Uma última recomendação. Em muitos portais nos quais estamos fazendo manutenção podemos ver a opção "Atualizar os modelos de módulo do diretório "themes/templates"?" ativada.
Definitivamente, salvo se estiver trabalhando em seu tema, desative esta opção! Escolha "não".

3. Banco de dados

Sua base de dados é chamada em todas as páginas. É chamado pelo XOOPS e por seus módulos.
Com o tempo e o uso, sua base de dados pode se tornar "Não otimizada", por isso recomendamos que você instale e configure o módulo XoopsCare.
Com esse módulo, você pode planejar alguns processos de otimização regulares para o seu banco de dados.

E mais: se um dia você tiver um problema de banco de dados corrompido se torna muito mais fácil (quando possível) recuperar dados de um banco de dados que é frequentemente otimizado do que de um que nunca é otimizado, além de ser mais rápido.

Dependendo do tráfego que seu portal tem você pode selecionar um maior ou menor valor para a opção "Manter todos os dados ...". Também recomendamos que você use o "Cache e Templates_c" e a opção "Emtpy Sessions".
E já que estamos falando de sessões, quanto mais tempo você definir para sessão, mais seu banco de dados será utilizado!
E não podemos esquecer que um robô como o do Google não vê com muito bons olhos o uso de sessões...

Ainda falando de Bancos de dados, vamos concluir a seção deste artigo com algumas otimizações que você pode trazer para as tabelas Mysql utilizadas pelo XOOPS e pelos módulos instalados em seu site.

Antes de fazer qualquer mudança em seu banco de dados aconselhámos seriamente a fazeres um backup completo dele (conteúdo e estrutura).

Como você deve saber o XOOPS usa um banco de dados para o seu conteúdo. Os módulos também.
Cada módulo tem suas próprias tabelas Mysql. São constituídas por uma estrutura (um nome e Campos) de dados.

Cada tabela pode ter quantos índices quiser.
Índices são utilizados para obter buscas mais rápidas, mas em contrapartida, o que você ganha durante a leitura do processo é perdido quando você insere dados pois precisará inserir os dados na tabela para atualizar o índice.
Mas, muitas vezes, o seu portal é mais usado na leitura do que na escrita. Portanto, se você tiver problemas com a velocidade do seu site então pode adicionar alguns índices possam ser úteis.

Neste momento você já deve ter feito o backup. Portanto para adicionar índices para o seu portal recomendamos que você use um script com o Phpmyadmin.
Adicionar índices é uma operação muito simples. Depois de ter clicado (à esquerda) em cima do nome da tabela, em seguida, a sua estrutura fica visível à direita e você verá um link, ou um ícone, para adicionar um índice sobre o campo desejado.

Vamos ver as tabelas XOOPS onde você pode adicionar alguns índices e quais campos você pode indexar.

A) A tabela de módulos(algo como "xoops_modules" em seu site, dependendo do prefixo que você usou durante a instalação, mas neste artigo vamos chamar-lhe "xoops"). Nesta tabela os módulos instalados em seu portal estão declarados. Você pode adicionar índice para 3 campos ", isactive", "weight" e "hascomments".

B) xoops_users. Esta tabela armazena a lista de todos os usuários do seu site. Você pode indexar o campo "level".

C) xoops_online. Esta tabela é utilizada pelo bloco "Quem está online?" (e o seu conteúdo é apenas preenchida quando este bloco está visível). Você pode indexar os campos "online_updated" e "online_uid".

D) Xoops_config. Nesta tabela, são guardadas todas as configurações para XOOPS e para os módulos. Você pode adicionar índice ao campo "conf_order".

E) xoops_xoopscomments. Como o nome sugere, esta tabela contém os comentários de todos os módulos. Você pode indexar o campo "com_status".

F) Agora vamos ver algumas tabelas de módulos. Primeiro o multiMenu, um módulo muito popular e que como o nome sugere é usado para criar alguns menus. Nas tabelas deste módulo, você pode indexar os campos “weight”, “hide” and “submenu”.

G) Módulo News. O News também é um conhecido módulo para criar artigos. Você pode adicionar um índice no campo “published” da tabela "xoops_stories".

H) extCal é uma excelente agenda. Na tabela"xoops_extcal_event", você pode indexar "event_start" e "event_end", também mude o "event_approved" de int (11) para tinyit (1) e seu índice. Você também pode indexar o campo "cat_id". Se quiser, você também pode adicionar um outro índice composto de "event_start" + "event_end" + "event_approved".

I) Smartsection, este é um módulo usado para criar seções internas. Nessa tabela chamada de xoops_smartsection_items, você pode indexar os campos "status" e "datesub". Ainda neste módulo, na tabela chamada "XOOPS _smartsection_categories" você pode indexar os campos "parentid" e "weight".

J) XoopsPoll, este é um módulo usado para criar enquetes. Na sua tabela chamada xoops_xoopspoll_desc, você pode indexar o campo "weight".

K) Newbb. Este é um fórum para Xoops. Na tabela chamada "xoops_bb_online" você pode adicionar um índice sobre o campo "online_uid" e na tabela chamada "xoops_bb_topics" você pode indexar o campo "approved". Para a tabela "xoops_bb_posts" você pode indexar o "approved". Por último, na tabela chamada "xoops_bb_forums" você pode adicionar um índice no campo "parent_forum".

L) Catads. Este é um excelente módulo pra anúncios e classificados. Na tabela "xoops_catads_ads" você pode indexar os campos “waiting”, “published”, “expired”, “uid” e o “cat_id”. Na tabela chamada "xoops_catads_cat" você pode adicionar índice aos campos "weight" e "pid".

M) SmartFAQ é um módulo que gerencia FAQs. Em sua tabela chamada "xoops_smartfaq_categories" você pode adicionar um índice no campo "parentid".

Esta não é uma lista completa. Você pode certamente encontrar tabelas que precisam de mais índices e tabelas mesmo sem índices.
Caso você seja um desenvolvedor ou usuário com experiência pode ativar o "slow queries log", de sua instalação Mysql.
Se você não for um desenvolvedor ou usuário experiente então pode ver, pelo menos, através do Phpmyadmin se as tabelas usadas pelo seu portal possuem índices.

4. Arquivos usados
Alguns arquivos são utilizados em todas as páginas, como é o caso do arquivo xoops.js.
Você pode encontrar este arquivo na pasta "include" do seu site.
Se você usa tema padrão esse arquivo é chamado em todas as páginas do seu site.

Com um programa como o jsmin, você pode "minimizar" o seu tamanho.
Isto pode parecer ridículo, mas num portal com muito tráfego pode ajudar a carregar mais ápido.

Você pode aplicar o jsmin em qualquer outro arquivo Javascript que você estiver usando, por exemplo como o jQuery ou o Prototype.
Em regra geral, para arquivos Javascript, coloque esses arquivos o mais embaixo possível no código do seu tema.
Você também pode aplicar esta regra para o código do Google Analytics (se você usá-lo) e para os anúncios do Google.

Outro tipo de arquivo que é utilizado pelos seus sites, são as fotos.
Tente reduzir o peso em Kb de suas imagens tanto quanto for possível.
Se estiver trabalhando com o Photoshop exporte os arquivos para a web e tente comprimi-los tanto quanto for possível.
Exatamente. O Photoshop possui no menu Arquivo a opção "Exportar para a Web". E ela não está lá a toa. Um arquivo salvo por esta opção é relativamente otimizado para ocupar menos espaço do que num simples "Salvar Como".
Se você não estiver usando o Photoshop, então eu recomendo que você use o XnView (disponível no Windows e Linux).

5. CSS
Seu portal certamente usa um arquivo CSS direcionado ao seu tema. Verifique se este arquivo não contém muitos comentários e remova-os se necessário.
Coloque a chamada para os seus arquivos CSS no próprio topo do seu tema, esta é uma forma de ganhar algum tempo.

Conclusão
Para portais em construção é normal que tenhamos as tabelas do Banco de dados, os arquivos CSS, os javascripts e algumas configurações internas ainda não racionalizadas. Mas se você tiver acabado o site ou já tiver entregue ao seu cliente tenha em mente que as medidas aqui expostas são de suma importância. De Kb em Kb por cada requisição você economizou provavelmente perto de 1 Gb em um ano inteiro. E sabemos que nesta área kbs é dinheiro, quanto mais banda mais caro. Então utilize estas dicas para melhorar o seu site. Além de todos os benefícios que você tem os usuários do portal ficarão muito mais satisfeitos com a velocidade de carregamento da página.


Marcadores: , , ,