HTTP 304 Not Modified, simulado requisição a requisição

HTTP 304 Not Modified

HTTP 304 Not Modified: ETag e If-None-Match explicados | We.Inc

Simule uma requisição condicional: defina o ETag e o Last-Modified do servidor, o If-None-Match e o If-Modified-Since do navegador, e veja 304 ou 200 com o motivo.

Uma resposta 304 Not Modified diz ao navegador que a cópia em cache ainda está atual, então o servidor não envia o corpo de novo. Ela responde a um GET ou HEAD condicional que trouxe If-None-Match ou If-Modified-Since. Um 304 é boa notícia, não um erro: economiza banda enquanto o arquivo em cache continua sendo usado.

Os pares de validadores por trás de um 304

Preencha o que o servidor tem no momento e o que o navegador envia, e o simulador aplica as regras de precedência da especificação HTTP. Ele mostra o status que o servidor deve devolver e qual cabeçalho decidiu. Deixe um campo vazio para omitir esse cabeçalho.

Perguntas frequentes

Uma resposta 304 é um erro?

Não. É um status da classe de redirecionamento que significa que a cópia em cache pode ser usada. O navegador mostra a página a partir do cache, e só os cabeçalhos passaram pela rede.

Uma resposta 304 pode ter corpo?

Não. A especificação diz que uma resposta 304 termina no fim da seção de cabeçalhos e não pode ter conteúdo.

Qual prevalece, If-None-Match ou If-Modified-Since?

If-None-Match. Quando uma requisição traz os dois, um servidor que suporta entity tags avalia If-None-Match e ignora If-Modified-Since, porque as tags detectam mudanças que uma data com precisão de um segundo não detecta.

Por que recebo 200 em vez de 304 depois de cada deploy?

O deploy mudou o arquivo ou o ETag dele, então a tag que o navegador guarda não corresponde mais. Esse é o comportamento correto. Se arquivos que não mudaram também perdem o 304, verifique se os seus servidores geram ETags diferentes para o mesmo conteúdo.

POST pode devolver 304?

Não. If-None-Match e If-Modified-Since só produzem 304 para GET e HEAD. Para outros métodos, uma condição que falha gera 412 Precondition Failed.

Como a revalidação funciona

Tags fortes e fracas

A troca na rede

Primeira visita: 200 com validadores

O servidor entrega um ETag e uma data Last-Modified junto com o conteúdo.

Visita seguinte: 304 sem corpo

O navegador devolve a tag guardada e recebe só cabeçalhos.

Respondendo você mesmo a requisições condicionais

Servidor http do Node com ETag baseado em hash do conteúdo

Calcula o hash do corpo, compara com If-None-Match e envia 304 sem corpo quando corresponde.

Simulador de requisição condicional

O que o servidor tem agora

O que o navegador envia

ETag

Last-Modified

If-None-Match

If-Modified-Since

Resposta do servidor

If-None-Match lista uma tag que corresponde ao ETag atual na comparação fraca, então a cópia em cache está atual.

If-None-Match é *, e o recurso existe, então a condição é falsa.

Nenhuma tag em If-None-Match corresponde ao ETag atual, então o servidor envia o conteúdo novo. If-Modified-Since não é verificado.

Não há If-None-Match, e Last-Modified não é posterior a If-Modified-Since.

Não há If-None-Match, e Last-Modified é posterior a If-Modified-Since.

If-Modified-Since está presente, mas uma das duas datas não pode ser lida, então o cabeçalho é ignorado.

A requisição não tem validadores, então é uma requisição comum.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site