Skip to main content
Validação HTML

Valor inválido “Expires” 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 diretamente em HTML. No entanto, a especificação HTML apenas permite um conjunto específico de valores: content-type, default-style, refresh, x-ua-compatible, e content-security-policy. Usar Expires como valor para http-equiv irá desencadear um erro de validação porque fica fora deste conjunto permitido.

Historicamente, alguns navegadores mais antigos e versões HTML eram mais permissivos sobre quais valores podiam aparecer em http-equiv, e os programadores comummente usavam <meta http-equiv="Expires" content="0"> ou padrões similares para tentar prevenir o cache de páginas. No entanto, esta abordagem nunca foi fiável — navegadores e proxies de cache lidam com cabeçalhos HTTP reais muito mais consistentemente do que equivalentes de etiquetas <meta>. O HTML moderno proíbe formalmente este valor.

Além da conformidade com as normas, existem razões práticas para evitar este padrão. Muitos navegadores simplesmente ignoram valores http-equiv não reconhecidos, o que significa que a etiqueta não faz nada útil. O comportamento de cache é melhor controlado ao nível HTTP, onde servidores, CDNs e proxies todos leem e respeitam os cabeçalhos. Confiar numa etiqueta <meta> para cache dá uma falsa sensação de controlo enquanto entulha o seu markup com código inválido.

Para corrigir este problema, remova a etiqueta <meta http-equiv="Expires" ...> do seu HTML e configure o cabeçalho HTTP Expires ou Cache-Control no seu servidor web.

Exemplos

Incorreto: Usar Expires em http-equiv

Isto desencadeia o erro de validação:

<head>
  <meta charset="UTF-8">
  <meta http-equiv="Expires" content="0">
  <meta http-equiv="Expires" content="Tue, 01 Jan 2025 00:00:00 GMT">
  <title>My Page</title>
</head>

Correto: Remover a etiqueta <meta> inválida

Simplesmente remova a etiqueta problemática. Use apenas valores http-equiv válidos:

<head>
  <meta charset="UTF-8">
  <title>My Page</title>
</head>

Correto: Usos válidos de http-equiv

Para referência, aqui estão exemplos de valores http-equiv válidos:

<head>
  <meta charset="UTF-8">
  <meta http-equiv="refresh" content="30">
  <meta http-equiv="content-security-policy" content="default-src 'self'">
  <meta http-equiv="default-style" content="main-stylesheet">
  <title>My Page</title>
</head>

Correto: Definir expiração de cache através da configuração do servidor

A forma adequada de controlar cache é através de cabeçalhos de resposta HTTP configurados no seu servidor.

Apache (.htaccess ou configuração do servidor):

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType text/html "access plus 1 day"
</IfModule>

Ou usando Cache-Control com mod_headers:

<IfModule mod_headers.c>
  Header set Cache-Control "no-cache, no-store, must-revalidate"
  Header set Expires "0"
</IfModule>

Nginx:

location ~* \.html$ {
  expires 1d;
  add_header Cache-Control "public, no-transform";
}

Para prevenir completamente o cache no Nginx:

location ~* \.html$ {
  expires -1;
  add_header Cache-Control "no-store, no-cache, must-revalidate";
}

Se não tiver acesso à configuração do servidor, muitas linguagens do lado do servidor permitem definir cabeçalhos programaticamente. Por exemplo, em PHP:

<?php
header("Expires: Tue, 01 Jan 2030 00:00:00 GMT");
header("Cache-Control: public, max-age=86400");
?>

Ao lidar com a expiração de cache ao nível do servidor, você obtém comportamento fiável em todos os navegadores, proxies e CDNs — enquanto mantém o seu HTML limpo e em conformidade com as normas.

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.