Skip to main content
Validação HTML

Valor inválido “Cache-Control” para o atributo “http-equiv” no elemento “meta”.

Sobre este problema HTML

O atributo http-equiv no elemento <meta> foi concebido para simular certos cabeçalhos de resposta HTTP quando um servidor não está configurado para os enviar diretamente. Contudo, a especificação HTML apenas permite um conjunto limitado de valores para este atributo. De acordo com o padrão HTML living do WHATWG, os valores válidos para http-equiv são:

  • content-type — uma forma alternativa de declarar a codificação de caracteres
  • default-style — define a folha de estilos preferida
  • refresh — redireciona ou recarrega a página após um atraso
  • x-ua-compatible — especifica o modo de compatibilidade do documento para o Internet Explorer
  • content-security-policy — declara uma política de segurança de conteúdo

Usar Cache-Control como valor de http-equiv é um padrão que teve origem no desenvolvimento web inicial, quando alguns navegadores tentavam honrar as diretivas de cache definidas através de tags <meta>. Na prática, os navegadores modernos ignoram completamente <meta http-equiv="Cache-Control">. O comportamento de cache é determinado pelos cabeçalhos de resposta HTTP reais enviados pelo servidor, não por tags <meta> no corpo do documento. Isto significa que a tag não só desencadeia um erro de validação como também não tem qualquer efeito prático — dá uma falsa sensação de controlo sobre o cache sem fazer nada.

Isto é importante por várias razões. HTML inválido pode causar comportamento inesperado nos navegadores, particularmente casos extremos com agentes de utilizador mais antigos ou menos comuns. Também mina a confiança na sua marcação — se um validador sinaliza problemas, torna-se mais difícil detetar erros genuinamente importantes. Além disso, depender de uma tag não funcional para cache pode levar a problemas reais se os programadores assumirem que o cache está a ser gerido quando não está.

A abordagem correta é configurar cabeçalhos de controlo de cache no seu servidor web ou na camada da aplicação. Todos os principais servidores web e frameworks fornecem uma forma direta de definir cabeçalhos HTTP Cache-Control.

Para Apache, pode adicionar isto ao seu .htaccess ou configuração do servidor:

Header set Cache-Control "no-cache, no-store, must-revalidate"

Para Nginx, use:

add_header Cache-Control "no-cache, no-store, must-revalidate";

Numa aplicação Node.js/Express:

res.set('Cache-Control', 'no-cache, no-store, must-revalidate');

Exemplos

Inválido: usar Cache-Control como valor de http-equiv

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My Page</title>
  <meta http-equiv="Cache-Control" content="no-cache">
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Expires" content="0">
</head>
<body>
  <p>This page attempts to control caching via meta tags.</p>
</body>
</html>

Neste exemplo, todas as três tags <meta> são problemáticas. Cache-Control e Pragma não são valores válidos para http-equiv. Embora Expires tenha sido historicamente usado, também não está na lista atual de valores conformes na especificação WHATWG.

Corrigido: remover tags <meta> inválidas

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My Page</title>
<!-- Cache-Control should be set via server HTTP headers -->

</head>
<body>
  <p>Caching is now properly handled server-side.</p>
</body>
</html>

As tags <meta> inválidas são removidas completamente. O comportamento de cache é configurado no servidor, onde realmente tem efeito.

Válido: usar um valor permitido para http-equiv

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Redirecting</title>
  <meta http-equiv="refresh" content="5;url=https://example.com">
</head>
<body>
  <p>You will be redirected in 5 seconds.</p>
</body>
</html>

Este exemplo usa refresh, que é um valor válido para http-equiv. Demonstra para que o atributo foi realmente concebido — um pequeno conjunto de diretivas bem definidas e suportadas pelos navegadores.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.