Tableless

Busca Menu

10 Dicas Simples Para Acelerar Seu Site Até 278 Vezes

Seja o primeiro a comentar por

Seu site é veloz?

Você sabia que, quanto mais veloz for seu site, mais satisfeito seu visitante vai ficar?

Isso é o que apontam algumas pesquisas realizadas pela Akamai e pela Gomez.com. Elas demonstraram que a satisfação do seu visitante com o seu site decai em 16% a cada 1 segundo a mais que ele aguarda pelo carregamento da página.

As pesquisas também concluíram que os usuários esperam que os sites carreguem em 2 segundos ou menos, sendo que eles abandonariam páginas que levassem mais de 3 segundos para carregar.

E ainda: 79% dos clientes que tiveram problemas com o desempenho de um site não voltariam a fazer negócio. E 44% deles contariam aos amigos sobre a má experiência.

Por isso, o tempo de carregamento das páginas é extremamente importante. Pode ser uma das chaves para seu negócio dar certo de verdade e atrair clientes.

Velocidade de carregamento é fundamental em qualquer site. E é o critério que mais pesa nas avaliações feitas por usuários.

Afinal, ninguém poderá avaliar o design do site ou seu conteúdo antes dele carregar completamente.

O grande problema é que muitos desenvolvedores focam muito em design e em conteúdo, deixando o desempenho em segundo plano. Muitas vezes, perdem alguns segundos de carregamento em prol de um efeito visual.

Pense que seu visitante é um cliente fiel, que voltará inúmeras vezes ao seu site. Mas ele só fará isso se o site for rápido e confiável.

Por isso separei aqui 10 dicas simples, focadas em banco de dados, para você otimizar o carregamento das páginas do seu site.

O mundo se move rápido. Seu site deve fazer o mesmo

O mundo se move rápido. Seu site deve fazer o mesmo

1. Selecione Apenas os Campos que Realmente Vai Usar

É muito comum vermos consultas como SELECT * FROM tabela. O asterisco (*) vai trazer todas as colunas da tabela. Mas nem sempre precisamos de todas elas.

Muitas vezes, temos uma tabela com 20, 50 ou até 100 ou mais colunas. Serão raros os casos em que você precisará de todas elas.

Por isso sempre defina quais campos quer selecionar.

2. Modele Corretamente o Banco de Dados

Esta dica parece bem óbvia, mas o fato é que a maioria dos problemas com desempenho são devido à modelagem errada dos bancos de dados.

Um simples exemplo que vejo com muita frequência é, salvar diversas informações como dados pessoais e financeiros na mesma coluna de uma tabela.

Outro exemplo é, salvar em um único campo os valores selecionados em checkboxes. Alguns programadores pegam todos os valores e os armazenam separados por vírgula em um único campo. Quando o usuário decide atualizar ou remover uma opção, o programador deve escrever linhas e mais linhas para separar os valores, comparar e depois unir de novo.

Modelagem errada prejudica o banco de dados, o programador, que precisará escrever mais códigos. e, principalmente, o desempenho da aplicação, que precisará processar todo esse código em excesso.

Modelagem de dados é a primeira fase do desenvolvimento. Estruture bem seu banco de dados antes mesmo de começar a escrever seus códigos.

3. Use a Cláusula LIMIT

Outra vez, parece uma dica óbvia. Até demais.

Porém, por incrível que pareça, tem muita gente por aí que não faz isso.

Imagine um site ou blog que exibe apenas 10 registros por página. O correto é usar LIMIT para trazer apenas esses 10.

Já vi códigos sem esse LIMIT, que buscam diversos registros e pegam, via programação, apenas os 10 primeiros.

Esse cliente você já perdeu

Esse cliente você já perdeu

4. Faça Cache das Consultas

As consultas mais rápidas são aquelas não executadas.

Explico.

Sempre que você executa uma consulta SQL, uma determinada quantidade de recursos do servidor é usada, além do tempo gasto, é claro.

Por isso, uma ótima opção para sites grandes e com muito tráfego é criar cache de dados, evitando que algumas consultas SQL frequentes sejam executadas pelo SGBD.

Há diversas ferramentas para isso, como, por exemplo, AdoDB e Memcached.

5. Não Execute Consultas Dentro de Loops

O velho Problema do N + 1.

Imagine esta situação: um site de artigos, com uma tabela de usuários e outra de artigos, que possui um campo que relaciona o artigo com seu autor.

Se precisar listar os autores e os títulos de seus respectivos posts, alguns programadores fariam o seguinte:

  1. Selecionar todos os usuários: SELECT id, nome FROM usuarios;
  2. Para cada usuário, buscar seus posts: SELECT titulo FROM posts WHERE user_id = id_do_usuario;

A segunda consulta seria executada N vezes, sendo N o número total de usuários.

Ou seja, total de consultas seria N + 1 (N consultas de posts mais uma consulta para a lista de usuários).

Porém, bastariam duas consultas ou mesmo um simples JOIN para resolver o problema, o que pode trazer um ganho de desempenho de até 13 Vezes.

Explico o Problema do N + 1 em mais detalhes neste artigo.

De olho no relógio!

De olho no relógio!

6. Use JOINs em Vez de Sub-Consultas

Quando programamos, usar sub-consultas é algo simples, lógico e funcional, como neste exemplo:

SELECT usuarios.id,
       (
        SELECT MAX(data_criacao)
               FROM posts
               WHERE usuario_id = usuarios.id
       ) AS ultimo_post
       FROM usuarios u

Embora sub-consultas sejam úteis, usar JOIN é igualmente funcional e mais rápido.

A consulta anterior pode ser transformada nesta:

SELECT a.id, MAX(p.data_criacao) AS ultimo_post
       FROM usuarios u
       INNER JOIN posts p ON (u.id = p.usuario_id)
       GROUP BY u.id

7. Use UNIONs ao invés de ORs

A seguinte consulta utiliza a cláusula OR para filtrar os registros:

SELECT * 
      FROM tabela1, tabela2
      WHERE tabela1.p = tabela2.q 
            OR tabela1.x = tabela2.y;

A cláusula UNION permite combinar os resultados de dois ou mais SELECTs.

A seguinte consulta, usando UNION, vai trazer os mesmos resultados que a consulta anterior, sendo mais rápida:

SELECT *
      FROM tabela1, tabela2 
      WHERE tabela1.p = tabela2.q
UNION
SELECT * 
      FROM tabela1, tabela2 
      WHERE tabela1.x = tabela2.y

8. Utilize Índices

Índices de banco de dados são como índices de bibliotecas. Eles permitem ao banco de dados encontrar os resultados sem perder tempo olhando registro por registro. Assim como um leitor olha o índice da biblioteca e encontra um livro com mais facilidade e rapidez.

Sempre crie índices em suas tabelas, indexando os campos que são frequentemente consultados.

9. Otimize as Tabelas do Banco de Dados

Alguns SGBDs, como o MySQL, possuem ferramentas nativas para otimização de seus dados.

Se suas tabelas são frequentemente modificadas, recebendo novos dados e removendo outros, pode ser interessante rodar uma otimização com certa frequência, para tornar as tabelas menores e mais rápidas.

A otimização toma um certo tempo para ser executada, por isso, é recomendável agendá-la para madrugadas ou para horários quando seu sistema tem pouco uso.

Para o MySQL, um simples exemplo de otimização pode ser feito com esta consulta:

OPTIMIZE TABLE nome_da_tabela;
Site rápido como foguete: desempenho até 278 Vezes maior

Site rápido como foguete: desempenho até 278 Vezes maior

10. Use um Servidor de Busca

Todas as dicas anteriores são válidas e trazem um certo ganho de desempenho.

Mas já imaginou conseguir ganhos de desempenho de Até 278 Vezes?!

Esse é o ganho que podemos conseguir com um Servidor de Busca como o ElasticSearch.

O ElasticSearch permite armazenar dados de forma otimizada para buscas extremamente rápidas.

Se o seu sistema faz muitos SELECTs, o ElasticSearch pode trazer ganhos fenomenais em desempenho.

Veja Neste Vídeo algumas dicas para Acelerar o Seu Site Até 278 Vezes!

Publicado no dia