Quando você está criando um dashboard que exibe imagens dinâmicas geradas por ferramentas como o MRTG, é comum que o navegador utilize imagens em cache, o que pode impedir que as informações mais recentes sejam mostradas. Neste post, você vai aprender como forçar o navegador a carregar sempre a versão mais atual das imagens, evitando o cache por meio de uma simples implementação em JavaScript.
Problema com Cache de Imagens no Dashboard
Por padrão, navegadores tendem a armazenar em cache recursos como imagens para melhorar a performance. No entanto, em um ambiente onde as imagens são geradas dinamicamente e atualizadas com frequência, como no MRTG, isso pode ser um problema, pois o navegador pode continuar exibindo versões antigas das imagens.
Solução
Uma maneira de contornar esse problema é adicionar um parâmetro dinâmico à URL da imagem. Isso faz com que o navegador interprete a URL como única, forçando o recarregamento da imagem sempre que ela for atualizada.
Implementação com JavaScript Usando Classe
Se você tem várias imagens em seu dashboard, pode usar uma classe para aplicar essa lógica a todas elas. Aqui está um exemplo prático de como fazer isso:
<img class="mrtgImage" src="mrtg_image1.png" alt="MRTG Image 1" />
<img class="mrtgImage" src="mrtg_image2.png" alt="MRTG Image 2" />
<img class="mrtgImage" src="mrtg_image3.png" alt="MRTG Image 3" />
<script>
// Função para evitar cache adicionando um timestamp à URL de cada imagem com a classe mrtgImage
function refreshImages() {
const images = document.querySelectorAll(".mrtgImage");
const timestamp = new Date().getTime();
images.forEach(img => {
// Adiciona o timestamp à URL da imagem
const src = img.getAttribute("src");
img.src = src.split("?")[0] + "?t=" + timestamp;
});
}
// Atualiza as imagens a cada 60 segundos (60000 milissegundos)
setInterval(refreshImages, 60000);
// Carrega as imagens sem cache ao carregar a página
window.onload = refreshImages;
</script>
Como Funciona:
- A função
refreshImages()
adiciona um parâmetro?t=
seguido do timestamp (tempo atual) à URL de cada imagem, garantindo que o navegador sempre carregue a versão mais recente. - Utilizamos
document.querySelectorAll(".mrtgImage")
para selecionar todas as imagens com a classe"mrtgImage"
. - Um
setInterval
garante que as imagens sejam atualizadas a cada 60 segundos, ou conforme a necessidade.
Conclusão
Com esse simples ajuste, você pode evitar o cache de imagens no seu dashboard de MRTG, garantindo que os dados mais recentes estejam sempre visíveis. Essa solução é leve e funciona em qualquer navegador, sem a necessidade de alterar configurações no servidor.