Cabeçalhos de controle de Cache


Os headers (cabeçalhos) de cache são componentes fundamentais no controle de como os recursos da aplicação são armazenados em cache, tanto pelos navegadores (cache do cliente) quanto por proxies intermediários (como o Peqi, por exemplo). Uma configuração adequada desses cabeçalhos pode resultar em melhorias significativas na velocidade de carregamento das páginas, eficiência da largura de banda e na experiência geral do usuário. Vamos explorar os cabeçalhos de cache mais comuns e como eles são usados para controlar o comportamento do cache.

Cache-Control

O cabeçalho Cache-Control é um dos mais poderosos e flexíveis para controle de cache. Ele permite especificar diretrizes tanto para caches privados (navegadores) quanto públicos (proxies e CDNs).

max-age=[segundos]: especifica o tempo máximo em que um recurso é considerado novo.
no-cache: obriga que o cache revalide o recurso com o servidor antes de servir a versão cacheada.
no-store: instrui o cache a não armazenar uma cópia do recurso sob quaisquer circunstâncias.
public: indica que a resposta pode ser armazenada por qualquer cache, mesmo se a resposta é normalmente não cacheável.
private: a resposta é destinada a um único usuário e não deve ser armazenada por caches compartilhados.
must-revalidate: o cache deve revalidar o recurso expirado antes de usá-lo, garantindo que o conteúdo não esteja desatualizado.

Expires

O cabeçalho Expires é usado para definir uma data/hora específica após a qual a resposta é considerada obsoleta. Se o conteúdo é estático e não muda frequentemente, esse cabeçalho pode ser uma forma simples de controlar o cache.

ETag

O cabeçalho ETag fornece um identificador único para uma versão de um recurso. Isso permite um método de validação eficiente: o cliente pode enviar um cabeçalho If-None-Match com o ETag em solicitações subsequentes. Se o recurso não mudou, o servidor pode responder com um status 304 (Not Modified), indicando que o cache pode ser reutilizado.

Last-Modified

Semelhante ao ETag, o cabeçalho Last-Modified indica a última vez que o recurso foi modificado. Os clientes podem enviar um cabeçalho If-Modified-Since em solicitações subsequentes. Se o recurso não foi modificado desde então, o servidor responde com 304, permitindo que o cache seja usado.

Pragma

O cabeçalho Pragma é um cabeçalho HTTP/1.0, geralmente usado apenas como um fallback para compatibilidade com caches HTTP/1.0 onde o cabeçalho Cache-Control não é suportado. O valor Pragma: no-cache é equivalente a Cache-Control: no-cache.

Vary

O cabeçalho Vary informa ao cache que a resposta solicitada é variável com base em um ou mais cabeçalhos de solicitação. Por exemplo, Vary: User-Agent indica que uma resposta diferente pode ser armazenada e servida com base no agente do usuário que faz a solicitação.

Conteúdo relacionado