Quer saber como deixar seu site mais rápido, entenda tudo sobre Headers de Cache Hit e Miss e como eles afetam a velocidade de seu site.
Cache hit e miss é um importante assunto quando se fala em aumentar a velocidade que um site é carregado. A diferença entre eles é principalmente se o conteúdo acessado vai estar no cache ou terá que ser procurado direto na memória do servidor.
Cache Hit
Cache Hit é quando o conteúdo solicitado pela CPU é encontrado no Cache. Nesse caso a busca pelo conteúdo não consome memória devido o conteúdo já estar no cache, tendo uma resposta mais rápida.
Cache Miss
Cache Miss é quando o conteúdo solicitado pelo servidor não está no Cache. Nesse caso a CPU vai tentar buscar a resposta em outros níveis de cache e caso não encontre, diretamente na memória da aplicação. Tendo uma resposta mais lenta e consumindo processamento da aplicação.
Reduzir a quantidade de Cache Miss
Quando ocorre o cache miss ele continua procurando o conteúdo em até 4 níveis de cache. No momento em que não encontra em um começa a procurar no próximo, no entanto para cada nível de cache que ele procura o tempo de resposta da requisição aumenta, causando lentidão na abertura da aplicação.
Para evitar que tenha grandes quantidade de Cache Miss, o que pode ser feito é adicionar um tempo de expiração para a vida útil do cache.
No caso a vida útil é o tempo que um conteúdo fica salvo em cache.
Como escolher a vida útil do cache
Escolher a vida útil do cache depende muito do site em que será configurado o cache.
Existem algumas opções de como pode ser definido o tempo de expiração.
Pode ser definido um curto tempo de expiração, o que faz o cache ser recarregado constantemente, ocasionando mais Cache Miss.
Ou ser definido um longo tempo de expiração, onde o cache é limpo poucas vezes, causando menos Cache Miss.
É importante observar que não existe um padrão específico para a vida útil do cache. Isso irá depender muito do conteúdo do site em que o cache será aplicado.
No caso se você tem um site que é atualizado constantemente, como um site de notícias, não é recomendado que coloque um longo tempo de cache, pois suas atualizações no site vão demorar para serem publicadas.
Mas se você tem um site onde raramente são feitas atualizações não teria problema de colocar um longo tempo de expiração como 1 semana ou 2 semanas, pois não teria atualizações para serem publicadas.
Como definir o tempo de cache
A vida útil do cache pode ser definida de várias maneiras dependendo de sua aplicação.
Em servidores apache podem ser definidas colocando regras no .htaccess.
# Enable Compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otfsucuri-scanner
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-iconsucuri-scanner
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
</IfModule>
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
# Leverage Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
<IfModule mod_headers.c>
<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
Header set Cache-Control "max-age=2678400, public"
</filesmatch>
<filesmatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, private, must-revalidate"
</filesmatch>
<filesmatch "\.(pdf)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
<filesmatch "\.(js)$">
Header set Cache-Control "max-age=2678400, private"
</filesmatch>
</IfModule>
Exemplo de regra que pode ser colocada no .htaccess.
Caso seja um WordPress pode ser adicionado com plugins de otimização, que tenham essa função. Um plugin gratuito que é muito utilizado para essa função é o WP Fastest Cache.
Além disso em nossos servidores oferecemos o serviço Varnish Cache onde é possível definir o tempo de cache para sua aplicação. Você consegue definir um cache total para a aplicação ou específico para cada extensão de arquivo. Caso queira ler mais sobre pode verificar nesse Post: Varnish: Como configurar o sistema de cache em seu site.
Restando dúvidas ou precisando de ajuda sobre Cache Hit e Miss, contate-nos via telefone ou chat e converse com nosso suporte. Mas tenha em mãos seu código de cliente e senha de atendimento para ser atendido com mais agilidade.