Eu tenho um site php em execução no servidor de nuvem. Sempre que adiciono novos arquivos css, js ou imagens, o navegador carrega os mesmos arquivos js, css e de imagem antigos armazenados no cache.
Meu site tem um doctype e uma meta tag, conforme abaixo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Page-Exit" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Exit" content="blendTrans(Duration=1.0)">
Por causa do doctype e do meta-código acima, estou carregando os mesmos arquivos armazenados em cache no navegador em vez de um novo
php
http-headers
browser-cache
cache-control
ArrayOutOfBound
fonte
fonte
No Cache in all Browsers
. Você também pode fazer um? RandomGeneratedNumber nos arquivos que não deseja que sejam armazenados em cache.Respostas:
tente isso
fonte
session_start()
posteriormente, ele substituirá o cabeçalhoCache-Control: private, max-age=10800, pre-check=10800
porque 180 minutos é o valor padrão desession.cache_expire
. Se você não puder evitar o início da sessão, mas precisará desativar o uso do cachesession_cache_limiter('private');session_cache_expire(0);
.header
função é um booleano para substituir . O parâmetro opcional replace indica se o cabeçalho deve substituir um cabeçalho semelhante anterior ou adicionar um segundo cabeçalho do mesmo tipo.Aqui, se você deseja controlá-lo através de HTML: faça como abaixo a Opção 1:
E se você deseja controlá-lo através do PHP: faça como na opção 2 abaixo :
E a opção 2 SEMPRE É MELHOR para evitar problemas de cache com base em proxy.
fonte
Você pode tentar isso:
Espero que ajude a impedir o cache, se houver!
fonte
Eu tive um problema com o cache dos meus arquivos CSS. Definir cabeçalhos no PHP não me ajudou (talvez porque os cabeçalhos precisassem ser configurados no arquivo de folha de estilo em vez da página vinculada a ele?).
Encontrei a solução nesta página: https://css-tricks.com/can-we-prevent-css-caching/
A solução:
Anexar carimbo de data e hora como a parte da consulta do URI para o arquivo vinculado.
(Pode ser usado para css, js, imagens etc.)
Para desenvolvimento:
<link rel="stylesheet" href="style.css?<?php echo date('Y-m-d_H:i:s'); ?>">
Para produção (onde o cache é principalmente uma coisa boa):
<link rel="stylesheet" type="text/css" href="style.css?version=3.2">
(e reescreva manualmente quando necessário)
Ou combinação destes dois:
EDITAR:
Ou uma combinação mais bonita desses dois:
fonte
Impedir que o cache do navegador não seja uma boa ideia, dependendo do caso. Procurando uma solução, encontrei soluções como esta:
o problema aqui é que, se o arquivo for substituído durante uma atualização no servidor, que é o meu cenário, o cache será ignorado porque o carimbo de data / hora é modificado, mesmo o conteúdo do arquivo é o mesmo.
Eu uso esta solução para forçar o navegador a baixar ativos somente se seu conteúdo for modificado:
fonte
stat
ligação. Sem cache do sistema de arquivos, 16ns, no máximo? Com cache, com confiabilidade <8ns. Nanossegundos. E no meu sistema, o MD5 pode processar 754 MiB / s sem piscar. (openssl speed md5
) Combinado, um arquivo CSS de 100 KB teria uma sobrecarga adicional combinada de… 129µs (microssegundos, 0,1295ms) + 8ns (o que não contribui significativamente para o número final) = 129µs.hash_file('md5', $deployment_counter)
ouhash_file('md5', $cache_clear_counter)
são os primeiros que vêm à mente.