A velocidade de carregamento é um ponto bastante importante para qualquer website ou blog na internet, especialmente para as pessoas que utilizam hospedagem partilhada, que nos dias de hoje é um dos serviços mais baratos que podem ser adquiridos para colocar o seu website online. Então, será uma mais valia para si enquanto proprietário de um website fazer com que o mesmo possa ter um tempo de carregamento reduzido, para que os seus visitantes fiquem agradados com a velocidade e navegabilidade do seu website. Além disso, a performance de carregamento dos websites é um dos pontos mais importantes a ter em conta quando se idealiza e desenvolve um website. A título de exemplo, o Google ao demorar mais 500 milissegundos a efetuar a pesquisa, perde cerca de 20% de pesquisas! Outro aspeto muito importante é o fato de a velocidade de carregamento de um website ser tido em conta para determinar o rankeamento nos resultados de pesquisa, quer isto dizer que um website lento irá ver o seu rankemanento ser reduzido. Nem tudo são más notícias e a verdade é que você pode otimizar os seus websites através de um conjunto de técnicas que iremos explicar ao longo deste artigo, que irão ser aplicadas no ficheiro .htaccess e no ficheiro header.php. As técnicas que iremos utilizar consistem basicamente em comprimir o conteúdo e permitir a utilização da cache no navegador. Está preparado para passar à ação?
1. UTILIZE A CACHE DO NAVEGADOR
A utilização da cache do navegador é uma técnica que permite que o tempo de carregamento de um website seja drasticamente reduzido ao determinarmos que o navegador deverá manter um determinado conjunto de ficheiros por um determinado tempo. Quando o ficheiro for necessário novamente, o navegador irá buscá-lo à sua cache, não necessitando assim de o baixar novamente do website. Além de reduzir o tempo de carregamento pela não necessidade de baixar determinados ficheiros todas as vezes que um visitante acessa o website, isto também vai fazer com que o tráfego utilizado ao final do mês seja igualmente reduzido pela não necessidade de os visitantes baixarem todos os arquivos do website cada vez que o acessam. Não será demais relembrar que obviamente na primeira vez que um visitante acede o seu website, ainda não haverá ficheiros em cache e o website terá de ser todo carregado pel navegador do visitante, colocando assim alguns ficheiros em cache, permitindo que posteriormente o visitante quando retornar ao website não tenha de esperar tanto tempo pelo carregamento do mesmo.
Introduzir a cache em servidores Apache:
A cache nos servidores Apache é ativada através da utilização dos módulos mod_expires e mod_headers. Em termos básicos o mod_expires determina a validade da cache e o mod_headers determina as diretivas para o controlo dos pedidos e respostas HTTP. Assim, localize o seu ficheiro .htaccess e insira o seguinte código para introduzir o mod_expires:
<ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 5 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" ExpiresByType text/html "access plus 600 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds" </ifModule>
Para introduzir o mod_headers, insira o seguinte código:
<ifModule mod_headers.c> <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(css)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(js)$"> Header set Cache-Control "private" </filesMatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control "private, must-revalidate" </filesMatch> </ifModule>
Cache em servidores Nginx
A utilização da cache em servidores Nginx pode ser habilitada utilizando um processo bastante mais simples, bastando determinar qual o tipo de ficheiros que pretende manter em cache e durante quanto tempo. Insira o seguinte código no seu ficheiro .htacess:
location ~* \.(jpg|png|gif|jpeg|css|js)$ { expires 1h; }
2. REDUZA O TAMANHO DO BANCO DE DADOS
Este passo pode não ser consensual entre os leitores da Escola WordPress, por isso não vou afirmar que é imperativo seguir este passo, deixarei essa decisão ao seu cargo, tendo você de verificar os prós e os contras da utilização desta técnica. Durante a criação de artigos, o WordPress tem a funcionalidade de autosave, e mesmo depois de o artigo ter sido publicado, é mantida uma revisão do artigo no banco de dados, o que ao fim de centenas ou milhares de artigos, se torna um conjunto de dados que podem ser desnecessários. Assim, é possível desativar as revisões em WordPress simplesmente adicionando a seguinte linha de código ao seu ficheiro wp-config.php:
define('WP_POST_REVISIONS', false );
Em alternativa poderá optar por determinar um X número de revisões por artigo, permitindo assim manter uma revisão do conteúdo. Para isso basta alterar o false para o número de revisões pretendido, como no exemplo abaixo:
define('WP_POST_REVISIONS', 3);
3. COMPRESSÃO DE FICHEIROS
A compressão de ficheiro reduz o tempo de resposta do seu website ao reduzir o tamanho dos ficheiros, sendo assim bastante útil e pertinente que você faça a compressão de ficheiros HTML, ficheiros de script e ficheiros de folhas de estilo. Em jeito de resumo, será sempre útil comprimir qualquer tipo de ficheiro de texto que incluam XML e JSON. Então, seguindo esta linha de raciocínio, os ficheiros de imagem e PDF não deverão ser comprimidos uma vez que já são comprimidos por natureza, e tentar comprimi-los irá apenas utilizar uma determinada carga de processamento do CPU e não irá produzir resultados que valham a pena.
Compressão no .htaccess para servidores Apache:
Existe um módulo para Apache desenvolvido pela Google que é o mod_pagespeed que pode ser utilizado para fazer a compressão de ficheiros. De momento apenas o GoDaddy e Dreamhost suportam esta funcionalidade. Dentro do seu ficheiros .htacess, insira o seguinte código:
<IfModule pagespeed_module> ModPagespeed on # using commands,filters etc </IfModule>
Caso você não tenha o seu website hospedado em um dos serviços acima, poderá utilizar um método alternativo que é o mod_deflate. Dentro do seu ficheiro .htacess, insira o seguinte código:
<ifModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript </ifModule>
Compressão no .htacess para servidores Nginx:
Caso você utilize um servidor baseado em Ngingx, localize o seu ficheiro .htaccess e insira o seguinte código:
server { gzip on; gzip_types text/html text/css application/x-javascript text/plain text/xml image/x-icon; }
Compressão no header.php
Se o seu servidor não suportar qualquer um dos métodos descritos acima, a sua alternativa é utilizar uma técnica que consiste em introduzir um script PHP no header.php que irá inserir a compressão de ficheiros, quer o seu website seja baseado em Apache ou Nginx. Então, para isso copie o seguinte código para o ficheiro header.php do seu template:
<?php if ( substr_count( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) ) { ob_start( "ob_gzhandler" ); } else { ob_start(); } ?>
4. DESATIVE AS ETAGS
As ETags (entity tags) são um mecanismo que os servidores web e os navegadores utilizar para determinar se o componente que se encontra na cache do browser corresponde ao original. As ETags são adicionadas para fornecer um mecanismo de validação que é mais flexivel que a utilização da data da última modificação, sendo uma string que identifica de forma única a versão de um determinado componente. Então, para desabilitar esta funcionalidade o processo é extremamente simples. Localize o seu ficheiro .htacess e insira o seguinte código:
Header unset ETag FileETag None
Abraço!