Como limpo o cache de um navegador com JavaScript?
Implementamos o código JavaScript mais recente, mas não conseguimos obter o código JavaScript mais recente.
Nota Editorial: Esta pergunta é semi-duplicada nos seguintes locais, e a resposta na primeira das seguintes perguntas é provavelmente a melhor. Essa resposta aceita não é mais a solução ideal.
Como forçar o navegador a recarregar arquivos CSS / JS em cache?
Como forçar os clientes a atualizar arquivos JavaScript?
Recarregar dinamicamente a fonte Javascript local / dados json
javascript
caching
Dylan Brams
fonte
fonte
?version=xxx
a seus arquivos vinculados a JS por meio de uma etapa de construção. Cada nova construção solicitará uma nova versão do arquivo JS.Respostas:
Você pode chamar window.location.reload (true) para recarregar a página atual. Ele ignorará todos os itens em cache e recuperará novas cópias da página, css, imagens, JavaScript etc. do servidor. Isso não limpa o cache inteiro, mas tem o efeito de limpar o cache da página em que você está.
No entanto, sua melhor estratégia é a versão do caminho ou nome do arquivo, conforme mencionado em várias outras respostas. Além disso, consulte Revving Nomes de arquivos: não use a string de consulta por motivos para não usar
?v=n
como seu esquema de versão.fonte
Você não pode limpar o cache com javascript. Uma maneira comum é acrescentar o número da revisão ou o último carimbo de data / hora atualizado ao arquivo, assim:
ou
myscript.js?updated=1234567890
fonte
Tente alterar o src do arquivo JavaScript? Disto:
Para isso:
Este método deve forçar seu navegador a carregar uma nova cópia do arquivo JS.
fonte
Além de armazenar em cache a cada hora ou a cada semana, você pode armazenar em cache de acordo com os dados do arquivo.
Exemplo (em PHP):
ou até mesmo usar o horário de modificação do arquivo:
fonte
Você também pode forçar o recarregamento do código a cada hora, como este, no PHP:
ou
fonte
coloque isso no final do seu modelo:
fonte
tente usar isso
Para isso:
fonte
Aqui está um trecho do que estou usando no meu projeto mais recente.
Do controlador:
Do ponto de vista:
Nosso processo de publicação gera um arquivo com o número de revisão da compilação atual. Isso funciona pela URL que codifica esse arquivo e o usa como um buster de cache. Como failover, se esse arquivo não existir, o número do ano e da semana será usado para que o cache ainda funcione e ele será atualizado pelo menos uma vez por semana.
Além disso, isso fornece interrupção do cache para cada carregamento de página no ambiente de desenvolvimento, para que os desenvolvedores não precisem se preocupar em limpar o cache de quaisquer recursos (javascript, css, chamadas ajax, etc.).
fonte
ou você pode simplesmente ler o arquivo js pelo servidor com file_get_contets e depois colocar eco no cabeçalho do conteúdo do js
fonte
Talvez "limpar o cache" não seja tão fácil quanto deveria ser. Em vez de limpar o cache nos meus navegadores, percebi que "tocar" no arquivo mudaria a data do arquivo de origem armazenado em cache no servidor (Testado no Edge, Chrome e Firefox) e a maioria dos navegadores baixaria automaticamente a cópia atualizada mais recente do o que está no seu servidor (código, gráficos também qualquer multimídia). Sugiro que você copie os scripts mais atuais no servidor e a solução "faça o que é necessário" antes da execução do programa, para que ele altere a data de todos os seus arquivos com problemas para a data e hora mais atuais e faça o download de uma nova cópia para o seu navegador:
... o resto do seu programa ...
Levei algum tempo para resolver esse problema (como muitos navegadores agem de maneira diferente com comandos diferentes, mas todos verificam a hora dos arquivos e se comparam à sua cópia baixada no seu navegador, se houver data e hora diferentes, fará a atualização), se você Não é possível seguir o caminho certo, sempre há outra solução melhor e utilizável. Cumprimentos e acampamento feliz.
fonte
Eu tive alguns problemas com o código sugerido por yboussard. O loop j interno não funcionou. Aqui está o código modificado que eu uso com sucesso.
fonte
Se você estiver usando o php pode fazer:
fonte
Cache.delete () pode ser usado para o novo chrome, firefox e opera.
fonte
You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
Por favor, não forneça informações incorretas. A API do cache é um tipo diferente de cache do cache http
O cache HTTP é acionado quando o servidor envia os cabeçalhos corretos , você não pode acessar com javasvipt.
A API de cache, por outro lado, é acionada quando você deseja; é útil ao trabalhar com o técnico de serviço, para que você possa interceptar a solicitação e respondê-la a partir desse tipo de cache, consulte: ilustração 1 ilustração 2 curso
Você pode usar essas técnicas para ter sempre um conteúdo novo para seus usuários:
Eu recomendaria o terceiro ver
fonte
Você também pode desativar o cache do navegador com meta tags HTML. Basta colocar tags html na seção head para evitar que a página da Web seja armazenada em cache enquanto você estiver codificando / testando e, quando terminar, pode remover as meta tags.
(na seção principal)
Atualize sua página depois de colar isso na cabeça e também atualize o novo código javascript.
Este link fornecerá outras opções se você precisar delas http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/
ou você pode simplesmente criar um botão como esse
ele é atualizado e evita o armazenamento em cache, mas ele permanecerá na sua página até que você termine o teste e poderá removê-lo. A primeira opção é a melhor opção.
fonte
Tendo a versão minha estrutura, aplico o número da versão aos caminhos de script e estilo
fonte
feche e abra o navegador depois de executar o código no console.
fonte
window.location.reload(true)
parece ter sido descontinuado pelo padrão HTML5. Uma maneira de fazer isso sem usar cadeias de consulta é usar oClear-Site-Data
cabeçalho , que parece estar padronizado .fonte
Como o cache do navegador está no mesmo link, você deve adicionar um final de número aleatório do URL.
new Date().getTime()
gerar um número diferente.Basta adicionar o
new Date().getTime()
final do link como uma chamadaResultado:
https://stackoverflow.com/questions.php?1571737901173
fonte