Aceleração de Sites – Memcached, Redis, PageSpeed, APC, HTTP/2 e CloudFlare

Temos 5 soluções para aceleração de sites, porem poucos clientes as usam corretamente. Vamos tentar explicar cada uma delas abaixo.

PageSpeed

Essa solução é a mais antiga nossa, ativada por padrão para todos os clientes.

Ele acelera os acessos ao seu site através de vários algoritmos, como o de comprimir o html, juntar scripts .js e .css e compacta-los (removendo tabulações, espaços, etc) e até mesmo recomprimindo as imagens que ele considerar “pesadas” para uma visualização “rápida” na internet, podendo inclusive mudar sua extenção de .png ou .jpeg para WebP.

E ainda ela é inteligente, recicla itens antigos, compara de tempos em tempos se o que está em cache é igual com o dado real, etc.

Como a solução já fica ativa, você não precisa fazer nada, apenas pode desativar caso gerar alguma incompatibilidade com o site. Detalhamos melhor essa solução em https://specialist.srv.br/pagespeed-acelerador-sites/ Vale uma leitura caso você ainda não tenha feito!

Memcached

Memcached é um sistema distribuído de cache em memória de propósitos gerais. É frequentemente utilizado para acelerar sites dinâmicos orientados a banco de dados, cacheando dados e objetos na RAM para reduzir o número de vezes que uma fonte de dados externa (como um banco de dados ou uma API) deve ser acessada.

Mesmo um web site servido dinamicamente provavelmente tem vários componentes de informações constantes durante a vida da página. Dentro de um site ou blog, é improvável que a lista de categorias para os tópicos individuais do blog altere regularmente entre visualizações de páginas ou ainda os arquivos .css, .js e outros. As alterações nestes arquivos ocorrem somente quando o webmaster do site realiza alguma alteração (por exemplo). Carregar estas informações toda vez, realizando o acesso ao MySQL, lendo e processando o .php é caro e lento.

Ai entra a grande vantagem de usar o Memcached. Atualmente ele roda no localhost, então basta seu site fazer uso dele para armazenar os dados. Exemplo: sites com WordPress, se você usa plugin de cache como “W3 Total Cache”, mude a forma de cache de “Disk” (basic ou enhanced) para o Memcached. Ele já fará o cache usando ele e não mais em arquivos no disco, veja após alguns segundos a diferença no resultado nos acessos às páginas.

Note que não recomendamos o cache em arquivos inclusive, além de lento, pode ultrapassar seu limite de espaço em disco com o tempo (se não tiver o costume de limpar o cache de tempos em tempos).

E por curiosidade, o PageSpeed acima tem um Memcached próprio somente para ele, onde todas as informações que ele guardou como .css, .js, .html compactados, ficam salvos em um cache exclusivo dele.

Redis

Redis é uma solução distribuída de armazenamento de dados muito popular em sistemas desenvolvidos nos últimos tempos. A grosso modo podemos dizer que ela veio para ficar no lugar do Memcached, porém por ser mais nova, nem todas as soluções “prontas” a suportam.

Além de ser fácil de usar, ela suporta vários tipos de estruturas que permitem ao desenvolvedor suprir a grande maioria das necessidades de dados que um problema pode requerer.

Ele guarda as informações no estilo chave-valor e suporta tipos complexos de valor, o que possibilita o uso da tecnologia em vários tipos de casos. Além disso, o Redis tem estratégias para guardar os dados em memória e em disco, garantindo resposta rápida e persistência de dados.

Da mesma forma que o Memcached, ele roda no localhost, então basta seu site fazer uso dele para armazenar os dados. Exemplo: sites com WordPress, se você usa plugin de cache como “W3 Total Cache”, mude a forma de cache de “Disk” (basic ou enhanced) ou outro para o Redis. Ele já fará o cache usando ele, veja após alguns segundos a diferença no resultado nos acessos às páginas.

APC

APC é um Cache Alternativo do próprio PHP, é um cache livre e aberto. Foi desenvolvido para prover um framework livre, aberto e robusto para cacheamento e otimização do código intermediário do PHP.

Todas as aplicações em PHP podem fazer uso dele nativamente. O próprio plugin “W3 Total Cache” citado nos exemplos anteriores para sites em WordPress suportam essa tecnologia também, embora neste caso recomendamos o uso do Memcached ou Redis. Use o APC apenas se não houver outras alternativas em seu sistema / site.

HTTP/2 ou h2

Esse é o novo protocolo http/https, que todos usam. A versão padrão é a 1.1, mas desde 2015 existe o http/2.0 chamado de h2 para simplificar.

Como todos os protocolos, no início surgiu muitos problemas e bugs, de forma que sua adoção nos navegadores acabou sendo bem posterior.

Em 2020 a Specialist ativou o h2 em todos os servidores web, que faz com que você acesse os sites mais rapidamente do que via o tradicional http/1.1, devido a diversas melhorias no h2, como Paralelização de requests com multiplexing, Server Push, Compressão de cabeçalho (HPACK), Priorização de requisições e outros.

Detalhes completos do h2 podem ser vistos em https://specialist.srv.br/suporte-ao-http-2-0/

Esse protocolo está ativado para todos os clientes, mas caso tenha um sistema que gere incompatibilidade, basta nos contactar solicitando a desativação do h2 para seu endereço.

CloudFlare

A CloudFlare possui um sistema de cacheamento e distribuição de conteúdo (CDN) onde seu site pode ficar mais rápido ainda para ser acessado, principalmente se os acessos partes de vários lugares (dentro do brasil ou fora) ao mesmo tempo.

Para sites pequenos com menos de 10 GB/mês de tráfego, não recomendamos a solução uma vez que fará nenhuma diferença. Mas para sites com maiores volumes, pode ser significativo utiliza-los.

Caso seu site entre nessa categoria, nos procure para ver se seu plano suporta essa solução (nós mesmo já procuramos por sites realmente grandes e acionamos o cliente pedindo autorização para ativar tal recurso, mas caso não vimos seu site e/ou você ainda seja nosso cliente, nos procure).

OBSERVAÇÕES FINAIS:

Vale lembrar que NÃO recomendamos o uso de cache na forma de arquivos, embora seja a forma mais utilizada no momento.

E PROIBIMOS o uso de cache via banco de dados (como via MySQL), como alguns webmaster configuraram seu site para fazer (e tivemos que desativa-los).

Via arquivos o acesso é muito mais lento (pois gera I/O de disco) do que via Memcached ou Redis e via MySQL será consumido muitos recursos podendo impactar todos os clientes, além de que pode ultrapassar o limite do seu plano precisando contratar um MySQL próprio somente para isso, algo desnecessário se usar o Memcached ou Redis por exemplo.

DICAS FINAIS

Caso você tenha um site, já esteja usando plugins de cache que faz uso do Memcached ou Redis e ainda assim acha que o site não está tão rápido quanto deveria estar, existem várias outras coisas a se verificar, tais como:

  • Seu MySQL está usando InnoDB (ao invés de MyISAM);
  • As tabelas do seu MySQL tem INDEXES suficientes para tudo quanto é tipo de consulta que seu site realiza (melhor exemplo, na tabela _options do WordPress, você pode criar indexes extras que acelerarão as consultas que ele faz na tabela, e acredite, são dezenas por acesso);
  • Você faz uso de .css e .js correto? Como é o carregamento deles, inline ou são arquivos externos? usa defer ou async? Caso contrarário eles estarão bloqueando a renderização da página enquanto são carregados.
  • Dê uma lida nestes dois super artigos de como acelerar mais ainda seu site, muitas dicas valem para qualquer site embora ambos foram focados em sites com WordPress: https://kinsta.com/pt/blog/google-pagespeed-insights/ e https://mythemeshop.com/blog/wordpress-speed-optimization/ (considere este último como sendo “o how-to de otimização mais completo que você já viu”.
  • Não esquecendo também que além de otimiza-lo você precisa mantê-lo seguro. Veja mais em https://specialist.srv.br/protegendo-seu-site-em-wordpress/
Compartilhe isso: